From e91c6a71b2682d6bd3e7713ab09cb0776d9070f9 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 22 Feb 2022 16:43:32 +0000 Subject: [PATCH 01/41] Update response filters for 0.13 --- app/controllers/general.php | 4 ++ src/Appwrite/Utopia/Response/Filters/V12.php | 68 ++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 src/Appwrite/Utopia/Response/Filters/V12.php diff --git a/app/controllers/general.php b/app/controllers/general.php index afe9a5f5e..4c0ae05d8 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -19,6 +19,7 @@ use Utopia\Database\Document; use Utopia\Database\Query; use Utopia\Database\Validator\Authorization; use Appwrite\Utopia\Request\Filters\V12; +use Appwrite\Utopia\Response\Filters\V12 as FiltersV12; use Utopia\Validator\Text; Config::setParam('domainVerification', false); @@ -157,6 +158,9 @@ App::init(function ($utopia, $request, $response, $console, $project, $dbForCons $responseFormat = $request->getHeader('x-appwrite-response-format', App::getEnv('_APP_SYSTEM_RESPONSE_FORMAT', '')); if ($responseFormat) { switch($responseFormat) { + case version_compare ($responseFormat , '0.12.3', '<='): + Response::setFilter(new FiltersV12()); + break; case version_compare ($responseFormat , '0.11.0', '<=') : Response::setFilter(new V11()); break; diff --git a/src/Appwrite/Utopia/Response/Filters/V12.php b/src/Appwrite/Utopia/Response/Filters/V12.php new file mode 100644 index 000000000..1df770f59 --- /dev/null +++ b/src/Appwrite/Utopia/Response/Filters/V12.php @@ -0,0 +1,68 @@ +parseError($content); + break; + case Response::MODEL_SESSION: + $parsedResponse = $this->parseSession($content); + + case Response::MODEL_FILE: + $parsedResponse = $this->parseFile($content); + + case Response::MODEL_FUNCTION: + $parsedResponse = $this->parseFunction($content); + + } + + return $parsedResponse; + } + + protected function parseError(array $content) + { + unset($content['type']); + return $content; + } + + protected function parseSession(array $content) + { + $content['providerToken'] = $content['providerAccessToken']; + unset($content['providerAccessToken']); + + unset($content['providerAccessTokenExpiry']); + + unset($content['providerRefreshToken']); + + return $content; + } + + protected function parseFile(array $content) + { + unset($content['bucketId']); + unset($content['chunksTotal']); + unset($content['chunksUploaded']); + + return $content; + } + + protected function parseFunction(array $content) + { + $content['required'] = implode(' ', $content['required']); + + return $content; + } +} \ No newline at end of file From 35557e03b0079e426f1f70ef458ae9993932d20e Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Wed, 23 Feb 2022 10:42:45 +0000 Subject: [PATCH 02/41] Update V12.php --- src/Appwrite/Utopia/Response/Filters/V12.php | 35 +++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/Appwrite/Utopia/Response/Filters/V12.php b/src/Appwrite/Utopia/Response/Filters/V12.php index 1df770f59..65e249e7e 100644 --- a/src/Appwrite/Utopia/Response/Filters/V12.php +++ b/src/Appwrite/Utopia/Response/Filters/V12.php @@ -27,6 +27,12 @@ class V12 extends Filter case Response::MODEL_FUNCTION: $parsedResponse = $this->parseFunction($content); + case Response::MODEL_USAGE_BUCKETS: + $parsedResponse = $this->parseUsageBuckets($content); + + case Response::MODEL_USAGE_STORAGE: + $parsedResponse = $this->parseUsageStorage($content); + } return $parsedResponse; @@ -61,8 +67,35 @@ class V12 extends Filter protected function parseFunction(array $content) { - $content['required'] = implode(' ', $content['required']); + $content['execute'] = implode(' ', $content['execute']); return $content; } + + protected function parseUsageBuckets(array $content) + { + unset($content['filesStorage']); + } + + protected function parseUsageStorage(array $content) + { + $content['storage'] = $content['filesStorage']; + unset($content['filesStorage']); + + $content['files'] = $content['tagsStorage']; + unset($content['tagsStorage']); + + unset($content['filesCount']); + unset($content['bucketsCount']); + unset($content['bucketsCreate']); + unset($content['bucketsRead']); + unset($content['bucketsUpdate']); + unset($content['bucketsDelete']); + unset($content['filesCount']); + unset($content['bucketsDelete']); + unset($content['filesCreate']); + unset($content['filesRead']); + unset($content['filesUpdate']); + unset($content['filesDelete']); + } } \ No newline at end of file From 61d7e8634c0e8800f2ef6c566a72863e792aba7b Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Thu, 24 Feb 2022 09:57:56 +0000 Subject: [PATCH 03/41] Update Request Filters --- app/controllers/general.php | 4 +++ src/Appwrite/Utopia/Request/Filters/V13.php | 33 +++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 src/Appwrite/Utopia/Request/Filters/V13.php diff --git a/app/controllers/general.php b/app/controllers/general.php index afe9a5f5e..7b7080424 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -19,6 +19,7 @@ use Utopia\Database\Document; use Utopia\Database\Query; use Utopia\Database\Validator\Authorization; use Appwrite\Utopia\Request\Filters\V12; +use Appwrite\Utopia\Request\Filters\V13; use Utopia\Validator\Text; Config::setParam('domainVerification', false); @@ -45,6 +46,9 @@ App::init(function ($utopia, $request, $response, $console, $project, $dbForCons $requestFormat = $request->getHeader('x-appwrite-response-format', App::getEnv('_APP_SYSTEM_RESPONSE_FORMAT', '')); if ($requestFormat) { switch($requestFormat) { + case version_compare ($requestFormat , '0.13.0', '<') : + Request::setFilter(new V13()); + break; case version_compare ($requestFormat , '0.12.0', '<') : Request::setFilter(new V12()); break; diff --git a/src/Appwrite/Utopia/Request/Filters/V13.php b/src/Appwrite/Utopia/Request/Filters/V13.php new file mode 100644 index 000000000..25fd29e76 --- /dev/null +++ b/src/Appwrite/Utopia/Request/Filters/V13.php @@ -0,0 +1,33 @@ +convertStringToNum($content, "min"); + $content = $this->convertStringToNum($content, "max"); + $content = $this->convertStringToNum($content, "default"); + break; + case "database.createIntegerAttribute": + $content = $this->convertStringToNum($content, "min"); + $content = $this->convertStringToNum($content, "max"); + $content = $this->convertStringToNum($content, "default"); + break; + } + + return $content; + } + + private function convertStringToNum($content, $value) { + $content[$value] = (float) $content[$value]; + return $content; + } +} From 8ff280a7514bada0ce01ea5f64c549e4cac9e957 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Fri, 25 Feb 2022 09:46:03 +0000 Subject: [PATCH 04/41] Convert num to string instead of visa versa --- src/Appwrite/Utopia/Request/Filters/V13.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Appwrite/Utopia/Request/Filters/V13.php b/src/Appwrite/Utopia/Request/Filters/V13.php index 25fd29e76..6c44b7591 100644 --- a/src/Appwrite/Utopia/Request/Filters/V13.php +++ b/src/Appwrite/Utopia/Request/Filters/V13.php @@ -12,22 +12,22 @@ class V13 extends Filter switch ($model) { // Replaced Types case "database.createFloatAttribute": - $content = $this->convertStringToNum($content, "min"); - $content = $this->convertStringToNum($content, "max"); - $content = $this->convertStringToNum($content, "default"); + $content = $this->convertNumToString($content, "min"); + $content = $this->convertNumToString($content, "max"); + $content = $this->convertNumToString($content, "default"); break; case "database.createIntegerAttribute": - $content = $this->convertStringToNum($content, "min"); - $content = $this->convertStringToNum($content, "max"); - $content = $this->convertStringToNum($content, "default"); + $content = $this->convertNumToString($content, "min"); + $content = $this->convertNumToString($content, "max"); + $content = $this->convertNumToString($content, "default"); break; } return $content; } - private function convertStringToNum($content, $value) { - $content[$value] = (float) $content[$value]; + private function convertNumToString($content, $value) { + $content[$value] = (string) $content[$value]; return $content; } } From a88be70e5e076b486ad094b3d37a07b43151b697 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Fri, 25 Feb 2022 10:37:13 +0000 Subject: [PATCH 05/41] Update V13.php --- src/Appwrite/Utopia/Request/Filters/V13.php | 23 ++++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/Appwrite/Utopia/Request/Filters/V13.php b/src/Appwrite/Utopia/Request/Filters/V13.php index 6c44b7591..a70f0eda5 100644 --- a/src/Appwrite/Utopia/Request/Filters/V13.php +++ b/src/Appwrite/Utopia/Request/Filters/V13.php @@ -12,22 +12,29 @@ class V13 extends Filter switch ($model) { // Replaced Types case "database.createFloatAttribute": - $content = $this->convertNumToString($content, "min"); - $content = $this->convertNumToString($content, "max"); - $content = $this->convertNumToString($content, "default"); + $content = $this->converStringToNum($content, "min"); + $content = $this->converStringToNum($content, "max"); + $content = $this->converStringToNum($content, "default"); break; case "database.createIntegerAttribute": - $content = $this->convertNumToString($content, "min"); - $content = $this->convertNumToString($content, "max"); - $content = $this->convertNumToString($content, "default"); + $content = $this->converStringToNum($content, "min"); + $content = $this->converStringToNum($content, "max"); + $content = $this->converStringToNum($content, "default"); break; + case "functions.createExecution": + $content = $this->convertExecution($content); } return $content; } - private function convertNumToString($content, $value) { - $content[$value] = (string) $content[$value]; + private function converStringToNum($content, $value) { + $content[$value] = (int) $content[$value]; + return $content; + } + + private function convertExecution($content) { + $content['async'] = true; return $content; } } From d130df9f78d40da44cb7c343305080311fc605f6 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Fri, 25 Feb 2022 10:56:49 +0000 Subject: [PATCH 06/41] Updated to be in sync with 0.13 functions --- src/Appwrite/Utopia/Response/Filters/V12.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Appwrite/Utopia/Response/Filters/V12.php b/src/Appwrite/Utopia/Response/Filters/V12.php index 65e249e7e..7977144af 100644 --- a/src/Appwrite/Utopia/Response/Filters/V12.php +++ b/src/Appwrite/Utopia/Response/Filters/V12.php @@ -27,6 +27,9 @@ class V12 extends Filter case Response::MODEL_FUNCTION: $parsedResponse = $this->parseFunction($content); + case Response::MODEL_EXECUTION: + $parsedResponse = $this->parseExecution($content); + case Response::MODEL_USAGE_BUCKETS: $parsedResponse = $this->parseUsageBuckets($content); @@ -68,6 +71,7 @@ class V12 extends Filter protected function parseFunction(array $content) { $content['execute'] = implode(' ', $content['execute']); + $content['tag'] = $content['deployment']; return $content; } @@ -98,4 +102,10 @@ class V12 extends Filter unset($content['filesUpdate']); unset($content['filesDelete']); } + + protected function parseExecution($content) { + $content['exitCode'] = $content['statusCode']; + + return $content; + } } \ No newline at end of file From 56bf7a51dffe80c44adfda6b5c52e570950c10bf Mon Sep 17 00:00:00 2001 From: Matej Baco Date: Sun, 27 Feb 2022 10:57:09 +0100 Subject: [PATCH 07/41] Refactored 'sum' to 'total' --- app/config/collections.php | 2 +- app/controllers/api/account.php | 22 +++---- app/controllers/api/database.php | 16 ++--- app/controllers/api/functions.php | 12 ++-- app/controllers/api/locale.php | 12 ++-- app/controllers/api/projects.php | 14 ++-- app/controllers/api/storage.php | 4 +- app/controllers/api/teams.php | 20 +++--- app/controllers/api/users.php | 6 +- app/tasks/usage.php | 8 +-- app/workers/deletes.php | 2 +- src/Appwrite/Utopia/Response.php | 4 +- .../Utopia/Response/Model/AttributeList.php | 4 +- .../Utopia/Response/Model/BaseList.php | 16 ++++- src/Appwrite/Utopia/Response/Model/Team.php | 4 +- tests/e2e/Services/Account/AccountBase.php | 10 +-- tests/e2e/Services/Database/DatabaseBase.php | 4 +- .../Database/DatabaseConsoleClientTest.php | 8 +-- .../Database/DatabaseCustomServerTest.php | 10 +-- .../e2e/Services/Functions/FunctionsBase.php | 36 +++++------ .../Functions/FunctionsCustomServerTest.php | 36 +++++------ tests/e2e/Services/Locale/LocaleBase.php | 22 +++---- .../Projects/ProjectsConsoleClientTest.php | 12 ++-- tests/e2e/Services/Storage/StorageBase.php | 2 +- tests/e2e/Services/Teams/TeamsBase.php | 64 +++++++++---------- tests/e2e/Services/Teams/TeamsBaseClient.php | 18 +++--- tests/e2e/Services/Teams/TeamsBaseServer.php | 10 +-- tests/e2e/Services/Users/UsersBase.php | 16 ++--- tests/e2e/Services/Webhooks/WebhooksBase.php | 12 ++-- .../Webhooks/WebhooksCustomClientTest.php | 2 +- 30 files changed, 210 insertions(+), 198 deletions(-) diff --git a/app/config/collections.php b/app/config/collections.php index 08723686a..98f41e883 100644 --- a/app/config/collections.php +++ b/app/config/collections.php @@ -1426,7 +1426,7 @@ $collections = [ 'filters' => [], ], [ - '$id' => 'sum', + '$id' => 'total', 'type' => Database::VAR_INTEGER, 'format' => '', 'size' => 0, diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 69602dc42..3e83affe9 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -80,11 +80,11 @@ App::post('/v1/account') $limit = $project->getAttribute('auths', [])['limit'] ?? 0; if ($limit !== 0) { - $sum = $dbForProject->count('users', [ + $total = $dbForProject->count('users', [ new Query('deleted', Query::TYPE_EQUAL, [false]), ], APP_LIMIT_USERS); - if ($sum >= $limit) { + if ($total >= $limit) { throw new Exception('Project registration is restricted. Contact your administrator for more information.', 501, Exception::USER_COUNT_EXCEEDED); } } @@ -483,9 +483,9 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect') $limit = $project->getAttribute('auths', [])['limit'] ?? 0; if ($limit !== 0) { - $sum = $dbForProject->count('users', [ new Query('deleted', Query::TYPE_EQUAL, [false]),], APP_LIMIT_USERS); + $total = $dbForProject->count('users', [ new Query('deleted', Query::TYPE_EQUAL, [false]),], APP_LIMIT_USERS); - if ($sum >= $limit) { + if ($total >= $limit) { throw new Exception('Project registration is restricted. Contact your administrator for more information.', 501, Exception::USER_COUNT_EXCEEDED); } } @@ -656,11 +656,11 @@ App::post('/v1/account/sessions/magic-url') $limit = $project->getAttribute('auths', [])['limit'] ?? 0; if ($limit !== 0) { - $sum = $dbForProject->count('users', [ + $total = $dbForProject->count('users', [ new Query('deleted', Query::TYPE_EQUAL, [false]), ], APP_LIMIT_USERS); - if ($sum >= $limit) { + if ($total >= $limit) { throw new Exception('Project registration is restricted. Contact your administrator for more information.', 501, Exception::USER_COUNT_EXCEEDED); } } @@ -928,11 +928,11 @@ App::post('/v1/account/sessions/anonymous') $limit = $project->getAttribute('auths', [])['limit'] ?? 0; if ($limit !== 0) { - $sum = $dbForProject->count('users', [ + $total = $dbForProject->count('users', [ new Query('deleted', Query::TYPE_EQUAL, [false]), ], APP_LIMIT_USERS); - if ($sum >= $limit) { + if ($total >= $limit) { throw new Exception('Project registration is restricted. Contact your administrator for more information.', 501, Exception::USER_COUNT_EXCEEDED); } } @@ -1163,7 +1163,7 @@ App::get('/v1/account/sessions') ; $response->dynamic(new Document([ 'sessions' => $sessions, - 'sum' => count($sessions), + 'total' => count($sessions), ]), Response::MODEL_SESSION_LIST); }); @@ -1249,7 +1249,7 @@ App::get('/v1/account/logs') ; $response->dynamic(new Document([ - 'sum' => $audit->countLogsByUserAndEvents($user->getId(), $auditEvents), + 'total' => $audit->countLogsByUserAndEvents($user->getId(), $auditEvents), 'logs' => $output, ]), Response::MODEL_LOG_LIST); }); @@ -1825,7 +1825,7 @@ App::delete('/v1/account/sessions') $events ->setParam('eventData', $response->output(new Document([ 'sessions' => $sessions, - 'sum' => $numOfSessions, + 'total' => $numOfSessions, ]), Response::MODEL_SESSION_LIST)) ; diff --git a/app/controllers/api/database.php b/app/controllers/api/database.php index ca56e080a..ebef3a268 100644 --- a/app/controllers/api/database.php +++ b/app/controllers/api/database.php @@ -239,7 +239,7 @@ App::get('/v1/database/collections') $response->dynamic(new Document([ 'collections' => $dbForProject->find('collections', $queries, $limit, $offset, [], [$orderType], $cursorCollection ?? null, $cursorDirection), - 'sum' => $dbForProject->count('collections', $queries, APP_LIMIT_COUNT), + 'total' => $dbForProject->count('collections', $queries, APP_LIMIT_COUNT), ]), Response::MODEL_COLLECTION_LIST); }); @@ -569,7 +569,7 @@ App::get('/v1/database/collections/:collectionId/logs') } $response->dynamic(new Document([ - 'sum' => $audit->countLogsByResource($resource), + 'total' => $audit->countLogsByResource($resource), 'logs' => $output, ]), Response::MODEL_LOG_LIST); }); @@ -1146,7 +1146,7 @@ App::get('/v1/database/collections/:collectionId/attributes') $usage->setParam('database.collections.read', 1); $response->dynamic(new Document([ - 'sum' => \count($attributes), + 'total' => \count($attributes), 'attributes' => $attributes ]), Response::MODEL_ATTRIBUTE_LIST); }); @@ -1437,7 +1437,7 @@ App::get('/v1/database/collections/:collectionId/indexes') $usage->setParam('database.collections.read', 1); $response->dynamic(new Document([ - 'sum' => \count($indexes), + 'total' => \count($indexes), 'indexes' => $indexes, ]), Response::MODEL_INDEX_LIST); }); @@ -1753,10 +1753,10 @@ App::get('/v1/database/collections/:collectionId/documents') if ($collection->getAttribute('permission') === 'collection') { /** @var Document[] $documents */ $documents = Authorization::skip(fn() => $dbForProject->find('collection_' . $collectionId, $queries, $limit, $offset, $orderAttributes, $orderTypes, $cursorDocument ?? null, $cursorDirection)); - $sum = Authorization::skip(fn() => $dbForProject->count('collection_' . $collectionId, $queries, APP_LIMIT_COUNT)); + $total = Authorization::skip(fn() => $dbForProject->count('collection_' . $collectionId, $queries, APP_LIMIT_COUNT)); } else { $documents = $dbForProject->find('collection_' . $collectionId, $queries, $limit, $offset, $orderAttributes, $orderTypes, $cursorDocument ?? null, $cursorDirection); - $sum = $dbForProject->count('collection_' . $collectionId, $queries, APP_LIMIT_COUNT); + $total = $dbForProject->count('collection_' . $collectionId, $queries, APP_LIMIT_COUNT); } /** @@ -1770,7 +1770,7 @@ App::get('/v1/database/collections/:collectionId/documents') ; $response->dynamic(new Document([ - 'sum' => $sum, + 'total' => $total, 'documents' => $documents, ]), Response::MODEL_DOCUMENT_LIST); }); @@ -1927,7 +1927,7 @@ App::get('/v1/database/collections/:collectionId/documents/:documentId/logs') } } $response->dynamic(new Document([ - 'sum' => $audit->countLogsByResource($resource), + 'total' => $audit->countLogsByResource($resource), 'logs' => $output, ]), Response::MODEL_LOG_LIST); }); diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 6d7b9cf09..76a06f253 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -118,7 +118,7 @@ App::get('/v1/functions') $response->dynamic(new Document([ 'functions' => $dbForProject->find('functions', $queries, $limit, $offset, [], [$orderType], $cursorFunction ?? null, $cursorDirection), - 'sum' => $dbForProject->count('functions', $queries, APP_LIMIT_COUNT), + 'total' => $dbForProject->count('functions', $queries, APP_LIMIT_COUNT), ]), Response::MODEL_FUNCTION_LIST); }); @@ -145,7 +145,7 @@ App::get('/v1/functions/runtimes') }, array_keys($runtimes)); $response->dynamic(new Document([ - 'sum' => count($runtimes), + 'total' => count($runtimes), 'runtimes' => $runtimes ]), Response::MODEL_RUNTIME_LIST); }); @@ -686,7 +686,7 @@ App::get('/v1/functions/:functionId/deployments') $queries[] = new Query('resourceType', Query::TYPE_EQUAL, ['functions']); $results = $dbForProject->find('deployments', $queries, $limit, $offset, [], [$orderType], $cursorDeployment ?? null, $cursorDirection); - $sum = $dbForProject->count('deployments', $queries, APP_LIMIT_COUNT); + $total = $dbForProject->count('deployments', $queries, APP_LIMIT_COUNT); foreach ($results as $result) { $build = $dbForProject->getDocument('builds', $result->getAttribute('buildId', '')); @@ -697,7 +697,7 @@ App::get('/v1/functions/:functionId/deployments') $response->dynamic(new Document([ 'deployments' => $results, - 'sum' => $sum, + 'total' => $total, ]), Response::MODEL_DEPLOYMENT_LIST); }); @@ -1020,11 +1020,11 @@ App::get('/v1/functions/:functionId/executions') } $results = $dbForProject->find('executions', $queries, $limit, $offset, [], [Database::ORDER_DESC], $cursorExecution ?? null, $cursorDirection); - $sum = $dbForProject->count('executions', $queries, APP_LIMIT_COUNT); + $total = $dbForProject->count('executions', $queries, APP_LIMIT_COUNT); $response->dynamic(new Document([ 'executions' => $results, - 'sum' => $sum, + 'total' => $total, ]), Response::MODEL_EXECUTION_LIST); }); diff --git a/app/controllers/api/locale.php b/app/controllers/api/locale.php index 9c9e152e5..34018f6e9 100644 --- a/app/controllers/api/locale.php +++ b/app/controllers/api/locale.php @@ -100,7 +100,7 @@ App::get('/v1/locale/countries') return strcmp($a->getAttribute('name'), $b->getAttribute('name')); }); - $response->dynamic(new Document(['countries' => $output, 'sum' => \count($output)]), Response::MODEL_COUNTRY_LIST); + $response->dynamic(new Document(['countries' => $output, 'total' => \count($output)]), Response::MODEL_COUNTRY_LIST); }); App::get('/v1/locale/countries/eu') @@ -136,7 +136,7 @@ App::get('/v1/locale/countries/eu') return strcmp($a->getAttribute('name'), $b->getAttribute('name')); }); - $response->dynamic(new Document(['countries' => $output, 'sum' => \count($output)]), Response::MODEL_COUNTRY_LIST); + $response->dynamic(new Document(['countries' => $output, 'total' => \count($output)]), Response::MODEL_COUNTRY_LIST); }); App::get('/v1/locale/countries/phones') @@ -171,7 +171,7 @@ App::get('/v1/locale/countries/phones') } } - $response->dynamic(new Document(['phones' => $output, 'sum' => \count($output)]), Response::MODEL_PHONE_LIST); + $response->dynamic(new Document(['phones' => $output, 'total' => \count($output)]), Response::MODEL_PHONE_LIST); }); App::get('/v1/locale/continents') @@ -204,7 +204,7 @@ App::get('/v1/locale/continents') return strcmp($a->getAttribute('name'), $b->getAttribute('name')); }); - $response->dynamic(new Document(['continents' => $output, 'sum' => \count($output)]), Response::MODEL_CONTINENT_LIST); + $response->dynamic(new Document(['continents' => $output, 'total' => \count($output)]), Response::MODEL_CONTINENT_LIST); }); App::get('/v1/locale/currencies') @@ -226,7 +226,7 @@ App::get('/v1/locale/currencies') $list = array_map(fn($node) => new Document($node), $list); - $response->dynamic(new Document(['currencies' => $list, 'sum' => \count($list)]), Response::MODEL_CURRENCY_LIST); + $response->dynamic(new Document(['currencies' => $list, 'total' => \count($list)]), Response::MODEL_CURRENCY_LIST); }); @@ -249,5 +249,5 @@ App::get('/v1/locale/languages') $list = array_map(fn ($node) => new Document($node), $list); - $response->dynamic(new Document(['languages' => $list, 'sum' => \count($list)]), Response::MODEL_LANGUAGE_LIST); + $response->dynamic(new Document(['languages' => $list, 'total' => \count($list)]), Response::MODEL_LANGUAGE_LIST); }); \ No newline at end of file diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index a9aef50a9..36c0019be 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -186,11 +186,11 @@ App::get('/v1/projects') } $results = $dbForConsole->find('projects', $queries, $limit, $offset, [], [$orderType], $cursorProject ?? null, $cursorDirection); - $sum = $dbForConsole->count('projects', $queries, APP_LIMIT_COUNT); + $total = $dbForConsole->count('projects', $queries, APP_LIMIT_COUNT); $response->dynamic(new Document([ 'projects' => $results, - 'sum' => $sum, + 'total' => $total, ]), Response::MODEL_PROJECT_LIST); }); @@ -649,11 +649,11 @@ App::get('/v1/projects/:projectId/webhooks') $webhooks = $dbForConsole->find('webhooks', [ new Query('projectId', Query::TYPE_EQUAL, [$project->getId()]) - ]); + ], 5000); $response->dynamic(new Document([ 'webhooks' => $webhooks, - 'sum' => count($webhooks), + 'total' => count($webhooks), ]), Response::MODEL_WEBHOOK_LIST); }); @@ -863,7 +863,7 @@ App::get('/v1/projects/:projectId/keys') $response->dynamic(new Document([ 'keys' => $keys, - 'sum' => count($keys), + 'total' => count($keys), ]), Response::MODEL_KEY_LIST); }); @@ -1070,7 +1070,7 @@ App::get('/v1/projects/:projectId/platforms') $response->dynamic(new Document([ 'platforms' => $platforms, - 'sum' => count($platforms), + 'total' => count($platforms), ]), Response::MODEL_PLATFORM_LIST); }); @@ -1294,7 +1294,7 @@ App::get('/v1/projects/:projectId/domains') $response->dynamic(new Document([ 'domains' => $domains, - 'sum' => count($domains), + 'total' => count($domains), ]), Response::MODEL_DOMAIN_LIST); }); diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 326578ee9..6b077d972 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -174,7 +174,7 @@ App::get('/v1/storage/buckets') $response->dynamic(new Document([ 'buckets' => $dbForProject->find('buckets', $queries, $limit, $offset, [], [$orderType], $cursorBucket ?? null, $cursorDirection), - 'sum' => $dbForProject->count('buckets', $queries, APP_LIMIT_COUNT), + 'total' => $dbForProject->count('buckets', $queries, APP_LIMIT_COUNT), ]), Response::MODEL_BUCKET_LIST); }); @@ -771,7 +771,7 @@ App::get('/v1/storage/buckets/:bucketId/files') $response->dynamic(new Document([ 'files' => $files, - 'sum' => $dbForProject->count('bucket_' . $bucket->getInternalId(), $queries, APP_LIMIT_COUNT), + 'total' => $dbForProject->count('bucket_' . $bucket->getInternalId(), $queries, APP_LIMIT_COUNT), ]), Response::MODEL_FILE_LIST); }); diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index d9262e75f..b23625c4c 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -57,7 +57,7 @@ App::post('/v1/teams') '$read' => ['team:'.$teamId], '$write' => ['team:'.$teamId .'/owner'], 'name' => $name, - 'sum' => ($isPrivilegedUser || $isAppUser) ? 0 : 1, + 'total' => ($isPrivilegedUser || $isAppUser) ? 0 : 1, 'dateCreated' => \time(), 'search' => implode(' ', [$teamId, $name]), ]))); @@ -131,11 +131,11 @@ App::get('/v1/teams') } $results = $dbForProject->find('teams', $queries, $limit, $offset, [], [$orderType], $cursorTeam ?? null, $cursorDirection); - $sum = $dbForProject->count('teams', $queries, APP_LIMIT_COUNT); + $total = $dbForProject->count('teams', $queries, APP_LIMIT_COUNT); $response->dynamic(new Document([ 'teams' => $results, - 'sum' => $sum, + 'total' => $total, ]), Response::MODEL_TEAM_LIST); }); @@ -311,9 +311,9 @@ App::post('/v1/teams/:teamId/memberships') $limit = $project->getAttribute('auths', [])['limit'] ?? 0; if ($limit !== 0 && $project->getId() !== 'console') { // check users limit, console invites are allways allowed. - $sum = $dbForProject->count('users', [], APP_LIMIT_USERS); + $total = $dbForProject->count('users', [], APP_LIMIT_USERS); - if($sum >= $limit) { + if($total >= $limit) { throw new Exception('Project registration is restricted. Contact your administrator for more information.', 501, Exception::USER_COUNT_EXCEEDED); } } @@ -377,7 +377,7 @@ App::post('/v1/teams/:teamId/memberships') } catch (Duplicate $th) { throw new Exception('User has already been invited or is already a member of this team', 409, Exception::TEAM_INVITE_ALREADY_EXISTS); } - $team->setAttribute('sum', $team->getAttribute('sum', 0) + 1); + $team->setAttribute('total', $team->getAttribute('total', 0) + 1); $team = Authorization::skip(fn() => $dbForProject->updateDocument('teams', $team->getId(), $team)); // Attach user to team @@ -479,7 +479,7 @@ App::get('/v1/teams/:teamId/memberships') cursorDirection: $cursorDirection ); - $sum = $dbForProject->count( + $total = $dbForProject->count( collection:'memberships', queries: $queries, max: APP_LIMIT_COUNT @@ -500,7 +500,7 @@ App::get('/v1/teams/:teamId/memberships') $response->dynamic(new Document([ 'memberships' => $memberships, - 'sum' => $sum, + 'total' => $total, ]), Response::MODEL_MEMBERSHIP_LIST); }); @@ -731,7 +731,7 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId/status') $user = $dbForProject->updateDocument('users', $user->getId(), $user); $membership = $dbForProject->updateDocument('memberships', $membership->getId(), $membership); - $team = Authorization::skip(fn() => $dbForProject->updateDocument('teams', $team->getId(), $team->setAttribute('sum', $team->getAttribute('sum', 0) + 1))); + $team = Authorization::skip(fn() => $dbForProject->updateDocument('teams', $team->getId(), $team->setAttribute('total', $team->getAttribute('total', 0) + 1))); $audits ->setParam('userId', $user->getId()) @@ -825,7 +825,7 @@ App::delete('/v1/teams/:teamId/memberships/:membershipId') Authorization::skip(fn() => $dbForProject->updateDocument('users', $user->getId(), $user)); if ($membership->getAttribute('confirm')) { // Count only confirmed members - $team->setAttribute('sum', \max($team->getAttribute('sum', 0) - 1, 0)); + $team->setAttribute('total', \max($team->getAttribute('total', 0) - 1, 0)); Authorization::skip(fn() => $dbForProject->updateDocument('teams', $team->getId(), $team)); } diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index f8bc8ca15..6bb14c500 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -128,7 +128,7 @@ App::get('/v1/users') $response->dynamic(new Document([ 'users' => $dbForProject->find('users', $queries, $limit, $offset, [], [$orderType], $cursorUser ?? null, $cursorDirection), - 'sum' => $dbForProject->count('users', $queries, APP_LIMIT_COUNT), + 'total' => $dbForProject->count('users', $queries, APP_LIMIT_COUNT), ]), Response::MODEL_USER_LIST); }); @@ -243,7 +243,7 @@ App::get('/v1/users/:userId/sessions') ; $response->dynamic(new Document([ 'sessions' => $sessions, - 'sum' => count($sessions), + 'total' => count($sessions), ]), Response::MODEL_SESSION_LIST); }); @@ -348,7 +348,7 @@ App::get('/v1/users/:userId/logs') ; $response->dynamic(new Document([ - 'sum' => $audit->countLogsByUserAndEvents($user->getId(), $auditEvents), + 'total' => $audit->countLogsByUserAndEvents($user->getId(), $auditEvents), 'logs' => $output, ]), Response::MODEL_LOG_LIST); }); diff --git a/app/tasks/usage.php b/app/tasks/usage.php index 67795e872..82723e146 100644 --- a/app/tasks/usage.php +++ b/app/tasks/usage.php @@ -487,7 +487,7 @@ $cli 'files' => [ 'namespace' => '', 'collectionPrefix' => 'bucket_', - 'sum' => [ + 'total' => [ 'field' => 'sizeOriginal' ] ], @@ -613,13 +613,13 @@ $cli } // check if sum calculation is required - $sum = $subOptions['sum'] ?? []; - if(empty($sum)) { + $total = $subOptions['total'] ?? []; + if(empty($total)) { continue; } $dbForProject->setNamespace("_project_{$projectId}"); - $total = (int) $dbForProject->sum(($subOptions['collectionPrefix'] ?? '') . $parent->getId(), $sum['field']); + $total = (int) $dbForProject->sum(($subOptions['collectionPrefix'] ?? '') . $parent->getId(), $total['field']); $subCollectionTotals[$subCollection] = ($ssubCollectionTotals[$subCollection] ?? 0) + $total; // Project level sum for sub collections like storage.total diff --git a/app/workers/deletes.php b/app/workers/deletes.php index de5ce5aeb..23297829a 100644 --- a/app/workers/deletes.php +++ b/app/workers/deletes.php @@ -227,7 +227,7 @@ class DeletesV1 extends Worker $team = $this->getProjectDB($projectId)->getDocument('teams', $teamId); if (!$team->isEmpty()) { $team = $this->getProjectDB($projectId)->updateDocument('teams', $teamId, new Document(\array_merge($team->getArrayCopy(), [ - 'sum' => \max($team->getAttribute('sum', 0) - 1, 0), // Ensure that sum >= 0 + 'total' => \max($team->getAttribute('total', 0) - 1, 0), // Ensure that sum >= 0 ]))); } } diff --git a/src/Appwrite/Utopia/Response.php b/src/Appwrite/Utopia/Response.php index 4d67302f3..778724d36 100644 --- a/src/Appwrite/Utopia/Response.php +++ b/src/Appwrite/Utopia/Response.php @@ -157,7 +157,7 @@ class Response extends SwooleResponse const MODEL_EXECUTION = 'execution'; const MODEL_EXECUTION_LIST = 'executionList'; const MODEL_BUILD = 'build'; - const MODEL_BUILD_LIST = 'buildList'; + const MODEL_BUILD_LIST = 'buildList'; // Not used anywhere yet const MODEL_FUNC_PERMISSIONS = 'funcPermissions'; // Project @@ -225,7 +225,7 @@ class Response extends SwooleResponse ->setModel(new BaseList('Runtimes List', self::MODEL_RUNTIME_LIST, 'runtimes', self::MODEL_RUNTIME)) ->setModel(new BaseList('Deployments List', self::MODEL_DEPLOYMENT_LIST, 'deployments', self::MODEL_DEPLOYMENT)) ->setModel(new BaseList('Executions List', self::MODEL_EXECUTION_LIST, 'executions', self::MODEL_EXECUTION)) - ->setModel(new BaseList('Builds List', self::MODEL_BUILD_LIST, 'builds', self::MODEL_BUILD)) + ->setModel(new BaseList('Builds List', self::MODEL_BUILD_LIST, 'builds', self::MODEL_BUILD)) // Not used anywhere yet ->setModel(new BaseList('Projects List', self::MODEL_PROJECT_LIST, 'projects', self::MODEL_PROJECT, true, false)) ->setModel(new BaseList('Webhooks List', self::MODEL_WEBHOOK_LIST, 'webhooks', self::MODEL_WEBHOOK, true, false)) ->setModel(new BaseList('API Keys List', self::MODEL_KEY_LIST, 'keys', self::MODEL_KEY, true, false)) diff --git a/src/Appwrite/Utopia/Response/Model/AttributeList.php b/src/Appwrite/Utopia/Response/Model/AttributeList.php index bbb5d8001..56dca1c7f 100644 --- a/src/Appwrite/Utopia/Response/Model/AttributeList.php +++ b/src/Appwrite/Utopia/Response/Model/AttributeList.php @@ -11,9 +11,9 @@ class AttributeList extends Model public function __construct() { $this - ->addRule('sum', [ + ->addRule('total', [ 'type' => self::TYPE_INTEGER, - 'description' => 'Total sum of items in the list.', + 'description' => 'Total amount of attributes in a collection.', 'default' => 0, 'example' => 5, ]) diff --git a/src/Appwrite/Utopia/Response/Model/BaseList.php b/src/Appwrite/Utopia/Response/Model/BaseList.php index f3fa35abf..5555b13b2 100644 --- a/src/Appwrite/Utopia/Response/Model/BaseList.php +++ b/src/Appwrite/Utopia/Response/Model/BaseList.php @@ -32,9 +32,21 @@ class BaseList extends Model $this->public = $public; if ($paging) { - $this->addRule('sum', [ + $namesWithCap = [ + 'documents', 'collections', 'users', 'files', 'buckets', 'functions', + 'deployments', 'executions', 'projects', 'webhooks', 'keys', + 'platforms', 'domains', 'memberships', 'teams' + ]; + + if (\in_array($namesWithCap, $name)) { + $description = 'Total number of ' . $key . ' documents that matched your query used as reference for offset pagination. When the `total` is more than 5000, it will be capped at 5000, and cursor pagination should be used. Read more about [pagination](https://appwrite.io/docs/pagination).'; + } else { + $description = 'Total number of ' . $key . ' documents that matched your query.'; + } + + $this->addRule('total', [ 'type' => self::TYPE_INTEGER, - 'description' => 'Total number of items available on the server.', + 'description' => $description, 'default' => 0, 'example' => 5, ]); diff --git a/src/Appwrite/Utopia/Response/Model/Team.php b/src/Appwrite/Utopia/Response/Model/Team.php index d9627f91b..afecd050d 100644 --- a/src/Appwrite/Utopia/Response/Model/Team.php +++ b/src/Appwrite/Utopia/Response/Model/Team.php @@ -28,9 +28,9 @@ class Team extends Model 'default' => 0, 'example' => 1592981250, ]) - ->addRule('sum', [ + ->addRule('total', [ 'type' => self::TYPE_INTEGER, - 'description' => 'Total sum of team members.', + 'description' => 'Total number of team members.', 'default' => 0, 'example' => 7, ]) diff --git a/tests/e2e/Services/Account/AccountBase.php b/tests/e2e/Services/Account/AccountBase.php index 41e2150c1..1bb489c0a 100644 --- a/tests/e2e/Services/Account/AccountBase.php +++ b/tests/e2e/Services/Account/AccountBase.php @@ -267,7 +267,7 @@ trait AccountBase $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertCount(2, $response['body']); - $this->assertEquals(1, $response['body']['sum']); + $this->assertEquals(1, $response['body']['total']); $this->assertEquals($sessionId, $response['body']['sessions'][0]['$id']); $this->assertEquals('Windows', $response['body']['sessions'][0]['osName']); @@ -325,7 +325,7 @@ trait AccountBase $this->assertIsArray($response['body']['logs']); $this->assertNotEmpty($response['body']['logs']); $this->assertCount(2, $response['body']['logs']); - $this->assertIsNumeric($response['body']['sum']); + $this->assertIsNumeric($response['body']['total']); $this->assertContains($response['body']['logs'][0]['event'], ['account.create', 'account.sessions.create']); $this->assertEquals($response['body']['logs'][0]['ip'], filter_var($response['body']['logs'][0]['ip'], FILTER_VALIDATE_IP)); @@ -384,7 +384,7 @@ trait AccountBase $this->assertIsArray($responseLimit['body']['logs']); $this->assertNotEmpty($responseLimit['body']['logs']); $this->assertCount(1, $responseLimit['body']['logs']); - $this->assertIsNumeric($responseLimit['body']['sum']); + $this->assertIsNumeric($responseLimit['body']['total']); $this->assertEquals($response['body']['logs'][0], $responseLimit['body']['logs'][0]); @@ -401,7 +401,7 @@ trait AccountBase $this->assertIsArray($responseOffset['body']['logs']); $this->assertNotEmpty($responseOffset['body']['logs']); $this->assertCount(1, $responseOffset['body']['logs']); - $this->assertIsNumeric($responseOffset['body']['sum']); + $this->assertIsNumeric($responseOffset['body']['total']); $this->assertEquals($response['body']['logs'][1], $responseOffset['body']['logs'][0]); @@ -419,7 +419,7 @@ trait AccountBase $this->assertIsArray($responseLimitOffset['body']['logs']); $this->assertNotEmpty($responseLimitOffset['body']['logs']); $this->assertCount(1, $responseLimitOffset['body']['logs']); - $this->assertIsNumeric($responseLimitOffset['body']['sum']); + $this->assertIsNumeric($responseLimitOffset['body']['total']); $this->assertEquals($response['body']['logs'][1], $responseLimitOffset['body']['logs'][0]); /** diff --git a/tests/e2e/Services/Database/DatabaseBase.php b/tests/e2e/Services/Database/DatabaseBase.php index 8f89afb7d..94e737ff3 100644 --- a/tests/e2e/Services/Database/DatabaseBase.php +++ b/tests/e2e/Services/Database/DatabaseBase.php @@ -472,7 +472,7 @@ trait DatabaseBase ])); $this->assertEquals(200, $attributes['headers']['status-code']); - $this->assertEquals(8, $attributes['body']['sum']); + $this->assertEquals(8, $attributes['body']['total']); $attributes = $attributes['body']['attributes']; @@ -2017,7 +2017,7 @@ trait DatabaseBase 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders())); - $this->assertEquals(3, $documents['body']['sum']); + $this->assertEquals(3, $documents['body']['total']); $this->assertCount(3, $documents['body']['documents']); /* diff --git a/tests/e2e/Services/Database/DatabaseConsoleClientTest.php b/tests/e2e/Services/Database/DatabaseConsoleClientTest.php index b113dbb02..9abc5252f 100644 --- a/tests/e2e/Services/Database/DatabaseConsoleClientTest.php +++ b/tests/e2e/Services/Database/DatabaseConsoleClientTest.php @@ -138,7 +138,7 @@ class DatabaseConsoleClientTest extends Scope $this->assertEquals($logs['headers']['status-code'], 200); $this->assertIsArray($logs['body']['logs']); - $this->assertIsNumeric($logs['body']['sum']); + $this->assertIsNumeric($logs['body']['total']); $logs = $this->client->call(Client::METHOD_GET, '/database/collections/' . $data['moviesId'] . '/logs', array_merge([ 'content-type' => 'application/json', @@ -150,7 +150,7 @@ class DatabaseConsoleClientTest extends Scope $this->assertEquals($logs['headers']['status-code'], 200); $this->assertIsArray($logs['body']['logs']); $this->assertLessThanOrEqual(1, count($logs['body']['logs'])); - $this->assertIsNumeric($logs['body']['sum']); + $this->assertIsNumeric($logs['body']['total']); $logs = $this->client->call(Client::METHOD_GET, '/database/collections/' . $data['moviesId'] . '/logs', array_merge([ 'content-type' => 'application/json', @@ -161,7 +161,7 @@ class DatabaseConsoleClientTest extends Scope $this->assertEquals($logs['headers']['status-code'], 200); $this->assertIsArray($logs['body']['logs']); - $this->assertIsNumeric($logs['body']['sum']); + $this->assertIsNumeric($logs['body']['total']); $logs = $this->client->call(Client::METHOD_GET, '/database/collections/' . $data['moviesId'] . '/logs', array_merge([ 'content-type' => 'application/json', @@ -174,6 +174,6 @@ class DatabaseConsoleClientTest extends Scope $this->assertEquals($logs['headers']['status-code'], 200); $this->assertIsArray($logs['body']['logs']); $this->assertLessThanOrEqual(1, count($logs['body']['logs'])); - $this->assertIsNumeric($logs['body']['sum']); + $this->assertIsNumeric($logs['body']['total']); } } diff --git a/tests/e2e/Services/Database/DatabaseCustomServerTest.php b/tests/e2e/Services/Database/DatabaseCustomServerTest.php index 18542961d..e824d2f75 100644 --- a/tests/e2e/Services/Database/DatabaseCustomServerTest.php +++ b/tests/e2e/Services/Database/DatabaseCustomServerTest.php @@ -48,7 +48,7 @@ class DatabaseCustomServerTest extends Scope 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders())); - $this->assertEquals(2, $collections['body']['sum']); + $this->assertEquals(2, $collections['body']['total']); $this->assertEquals($test1['body']['$id'], $collections['body']['collections'][0]['$id']); $this->assertEquals($test2['body']['$id'], $collections['body']['collections'][1]['$id']); @@ -63,7 +63,7 @@ class DatabaseCustomServerTest extends Scope 'orderType' => 'DESC' ]); - $this->assertEquals(2, $collections['body']['sum']); + $this->assertEquals(2, $collections['body']['total']); $this->assertEquals($base[0]['$id'], $collections['body']['collections'][0]['$id']); $this->assertEquals($base[1]['$id'], $collections['body']['collections'][1]['$id']); @@ -135,7 +135,7 @@ class DatabaseCustomServerTest extends Scope 'search' => 'first' ]); - $this->assertEquals(1, $collections['body']['sum']); + $this->assertEquals(1, $collections['body']['total']); $this->assertEquals('first', $collections['body']['collections'][0]['$id']); $collections = $this->client->call(Client::METHOD_GET, '/database/collections', array_merge([ @@ -145,7 +145,7 @@ class DatabaseCustomServerTest extends Scope 'search' => 'Test' ]); - $this->assertEquals(2, $collections['body']['sum']); + $this->assertEquals(2, $collections['body']['total']); $this->assertEquals('Test 1', $collections['body']['collections'][0]['name']); $this->assertEquals('Test 2', $collections['body']['collections'][1]['name']); @@ -156,7 +156,7 @@ class DatabaseCustomServerTest extends Scope 'search' => 'Nonexistent' ]); - $this->assertEquals(0, $collections['body']['sum']); + $this->assertEquals(0, $collections['body']['total']); /** * Test for FAILURE diff --git a/tests/e2e/Services/Functions/FunctionsBase.php b/tests/e2e/Services/Functions/FunctionsBase.php index ff1b37c7a..3d0a541fb 100644 --- a/tests/e2e/Services/Functions/FunctionsBase.php +++ b/tests/e2e/Services/Functions/FunctionsBase.php @@ -32,8 +32,8 @@ trait FunctionsBase // $this->assertEquals(200, $response['headers']['status-code']); // $this->assertNotEmpty($response['body']['$id']); // $this->assertEquals('Arsenal', $response['body']['name']); - // $this->assertGreaterThan(-1, $response['body']['sum']); - // $this->assertIsInt($response['body']['sum']); + // $this->assertGreaterThan(-1, $response['body']['total']); + // $this->assertIsInt($response['body']['total']); // $this->assertIsInt($response['body']['dateCreated']); // /** @@ -57,8 +57,8 @@ trait FunctionsBase // ], $this->getHeaders())); // $this->assertEquals(200, $response['headers']['status-code']); - // $this->assertGreaterThan(0, $response['body']['sum']); - // $this->assertIsInt($response['body']['sum']); + // $this->assertGreaterThan(0, $response['body']['total']); + // $this->assertIsInt($response['body']['total']); // $this->assertCount(3, $response['body']['teams']); // $response = $this->client->call(Client::METHOD_GET, '/teams', array_merge([ @@ -69,8 +69,8 @@ trait FunctionsBase // ]); // $this->assertEquals(200, $response['headers']['status-code']); - // $this->assertGreaterThan(0, $response['body']['sum']); - // $this->assertIsInt($response['body']['sum']); + // $this->assertGreaterThan(0, $response['body']['total']); + // $this->assertIsInt($response['body']['total']); // $this->assertCount(2, $response['body']['teams']); // $response = $this->client->call(Client::METHOD_GET, '/teams', array_merge([ @@ -81,8 +81,8 @@ trait FunctionsBase // ]); // $this->assertEquals(200, $response['headers']['status-code']); - // $this->assertGreaterThan(0, $response['body']['sum']); - // $this->assertIsInt($response['body']['sum']); + // $this->assertGreaterThan(0, $response['body']['total']); + // $this->assertIsInt($response['body']['total']); // $this->assertCount(2, $response['body']['teams']); // $response = $this->client->call(Client::METHOD_GET, '/teams', array_merge([ @@ -93,8 +93,8 @@ trait FunctionsBase // ]); // $this->assertEquals(200, $response['headers']['status-code']); - // $this->assertGreaterThan(0, $response['body']['sum']); - // $this->assertIsInt($response['body']['sum']); + // $this->assertGreaterThan(0, $response['body']['total']); + // $this->assertIsInt($response['body']['total']); // $this->assertCount(1, $response['body']['teams']); // $this->assertEquals('Manchester United', $response['body']['teams'][0]['name']); @@ -106,8 +106,8 @@ trait FunctionsBase // ]); // $this->assertEquals(200, $response['headers']['status-code']); - // $this->assertGreaterThan(0, $response['body']['sum']); - // $this->assertIsInt($response['body']['sum']); + // $this->assertGreaterThan(0, $response['body']['total']); + // $this->assertIsInt($response['body']['total']); // $this->assertCount(1, $response['body']['teams']); // $this->assertEquals('Manchester United', $response['body']['teams'][0]['name']); @@ -133,8 +133,8 @@ trait FunctionsBase // $this->assertEquals(201, $response['headers']['status-code']); // $this->assertNotEmpty($response['body']['$id']); // $this->assertEquals('Demo', $response['body']['name']); - // $this->assertGreaterThan(-1, $response['body']['sum']); - // $this->assertIsInt($response['body']['sum']); + // $this->assertGreaterThan(-1, $response['body']['total']); + // $this->assertIsInt($response['body']['total']); // $this->assertIsInt($response['body']['dateCreated']); // $response = $this->client->call(Client::METHOD_PUT, '/teams/'.$response['body']['$id'], array_merge([ @@ -147,8 +147,8 @@ trait FunctionsBase // $this->assertEquals(200, $response['headers']['status-code']); // $this->assertNotEmpty($response['body']['$id']); // $this->assertEquals('Demo New', $response['body']['name']); - // $this->assertGreaterThan(-1, $response['body']['sum']); - // $this->assertIsInt($response['body']['sum']); + // $this->assertGreaterThan(-1, $response['body']['total']); + // $this->assertIsInt($response['body']['total']); // $this->assertIsInt($response['body']['dateCreated']); // /** @@ -182,8 +182,8 @@ trait FunctionsBase // $this->assertEquals(201, $response['headers']['status-code']); // $this->assertNotEmpty($response['body']['$id']); // $this->assertEquals('Demo', $response['body']['name']); - // $this->assertGreaterThan(-1, $response['body']['sum']); - // $this->assertIsInt($response['body']['sum']); + // $this->assertGreaterThan(-1, $response['body']['total']); + // $this->assertIsInt($response['body']['total']); // $this->assertIsInt($response['body']['dateCreated']); // $response = $this->client->call(Client::METHOD_DELETE, '/teams/'.$teamUid, array_merge([ diff --git a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php index c33aac4fb..7a8235347 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php @@ -146,7 +146,7 @@ class FunctionsCustomServerTest extends Scope ], $this->getHeaders())); $this->assertEquals($functions['headers']['status-code'], 200); - $this->assertEquals($functions['body']['sum'], 2); + $this->assertEquals($functions['body']['total'], 2); $this->assertIsArray($functions['body']['functions']); $this->assertCount(2, $functions['body']['functions']); $this->assertEquals($functions['body']['functions'][0]['name'], 'Test'); @@ -389,7 +389,7 @@ class FunctionsCustomServerTest extends Scope ], $this->getHeaders())); $this->assertEquals($function['headers']['status-code'], 200); - $this->assertEquals($function['body']['sum'], 2); + $this->assertEquals($function['body']['total'], 2); $this->assertIsArray($function['body']['deployments']); $this->assertCount(2, $function['body']['deployments']); @@ -404,7 +404,7 @@ class FunctionsCustomServerTest extends Scope ])); $this->assertEquals($function['headers']['status-code'], 200); - $this->assertEquals(2, $function['body']['sum']); + $this->assertEquals(2, $function['body']['total']); $this->assertIsArray($function['body']['deployments']); $this->assertCount(2, $function['body']['deployments']); $this->assertEquals($function['body']['deployments'][0]['$id'], $data['deploymentId']); @@ -417,7 +417,7 @@ class FunctionsCustomServerTest extends Scope ])); $this->assertEquals($function['headers']['status-code'], 200); - $this->assertEquals(2, $function['body']['sum']); + $this->assertEquals(2, $function['body']['total']); $this->assertIsArray($function['body']['deployments']); $this->assertCount(2, $function['body']['deployments']); $this->assertEquals($function['body']['deployments'][0]['$id'], $data['deploymentId']); @@ -430,7 +430,7 @@ class FunctionsCustomServerTest extends Scope ])); $this->assertEquals($function['headers']['status-code'], 200); - $this->assertEquals(2, $function['body']['sum']); + $this->assertEquals(2, $function['body']['total']); $this->assertIsArray($function['body']['deployments']); $this->assertCount(2, $function['body']['deployments']); $this->assertEquals($function['body']['deployments'][0]['$id'], $data['deploymentId']); @@ -540,7 +540,7 @@ class FunctionsCustomServerTest extends Scope ], $this->getHeaders())); $this->assertEquals($function['headers']['status-code'], 200); - $this->assertEquals($function['body']['sum'], 1); + $this->assertEquals($function['body']['total'], 1); $this->assertIsArray($function['body']['executions']); $this->assertCount(1, $function['body']['executions']); $this->assertEquals($function['body']['executions'][0]['$id'], $data['executionId']); @@ -557,8 +557,8 @@ class FunctionsCustomServerTest extends Scope ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(1, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertEquals(1, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertCount(1, $response['body']['executions']); $this->assertEquals($data['functionId'], $response['body']['executions'][0]['functionId']); @@ -570,8 +570,8 @@ class FunctionsCustomServerTest extends Scope ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(1, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertEquals(1, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertCount(1, $response['body']['executions']); $this->assertEquals($data['executionId'], $response['body']['executions'][0]['$id']); @@ -753,7 +753,7 @@ class FunctionsCustomServerTest extends Scope ], $this->getHeaders())); $this->assertEquals($executions['headers']['status-code'], 200); - $this->assertEquals($executions['body']['sum'], 1); + $this->assertEquals($executions['body']['total'], 1); $this->assertIsArray($executions['body']['executions']); $this->assertCount(1, $executions['body']['executions']); $this->assertEquals($executions['body']['executions'][0]['$id'], $executionId); @@ -868,7 +868,7 @@ class FunctionsCustomServerTest extends Scope ], $this->getHeaders())); $this->assertEquals($executions['headers']['status-code'], 200); - $this->assertEquals($executions['body']['sum'], 1); + $this->assertEquals($executions['body']['total'], 1); $this->assertIsArray($executions['body']['executions']); $this->assertCount(1, $executions['body']['executions']); $this->assertEquals($executions['body']['executions'][0]['$id'], $executionId); @@ -974,7 +974,7 @@ class FunctionsCustomServerTest extends Scope ], $this->getHeaders())); $this->assertEquals($executions['headers']['status-code'], 200); - $this->assertEquals($executions['body']['sum'], 1); + $this->assertEquals($executions['body']['total'], 1); $this->assertIsArray($executions['body']['executions']); $this->assertCount(1, $executions['body']['executions']); $this->assertEquals($executions['body']['executions'][0]['$id'], $executionId); @@ -1079,7 +1079,7 @@ class FunctionsCustomServerTest extends Scope ], $this->getHeaders())); $this->assertEquals($executions['headers']['status-code'], 200); - $this->assertEquals($executions['body']['sum'], 1); + $this->assertEquals($executions['body']['total'], 1); $this->assertIsArray($executions['body']['executions']); $this->assertCount(1, $executions['body']['executions']); $this->assertEquals($executions['body']['executions'][0]['$id'], $executionId); @@ -1184,7 +1184,7 @@ class FunctionsCustomServerTest extends Scope ], $this->getHeaders())); $this->assertEquals($executions['headers']['status-code'], 200); - $this->assertEquals($executions['body']['sum'], 1); + $this->assertEquals($executions['body']['total'], 1); $this->assertIsArray($executions['body']['executions']); $this->assertCount(1, $executions['body']['executions']); $this->assertEquals($executions['body']['executions'][0]['$id'], $executionId); @@ -1289,7 +1289,7 @@ class FunctionsCustomServerTest extends Scope ], $this->getHeaders())); $this->assertEquals($executions['headers']['status-code'], 200); - $this->assertEquals($executions['body']['sum'], 1); + $this->assertEquals($executions['body']['total'], 1); $this->assertIsArray($executions['body']['executions']); $this->assertCount(1, $executions['body']['executions']); $this->assertEquals($executions['body']['executions'][0]['$id'], $executionId); @@ -1394,7 +1394,7 @@ class FunctionsCustomServerTest extends Scope // ], $this->getHeaders())); // $this->assertEquals($executions['headers']['status-code'], 200); - // $this->assertEquals($executions['body']['sum'], 1); + // $this->assertEquals($executions['body']['total'], 1); // $this->assertIsArray($executions['body']['executions']); // $this->assertCount(1, $executions['body']['executions']); // $this->assertEquals($executions['body']['executions'][0]['$id'], $executionId); @@ -1419,7 +1419,7 @@ class FunctionsCustomServerTest extends Scope ], $this->getHeaders())); $this->assertEquals(200, $runtimes['headers']['status-code']); - $this->assertGreaterThan(0, $runtimes['body']['sum']); + $this->assertGreaterThan(0, $runtimes['body']['total']); $runtime = $runtimes['body']['runtimes'][0]; diff --git a/tests/e2e/Services/Locale/LocaleBase.php b/tests/e2e/Services/Locale/LocaleBase.php index 98df97a70..dec0d2131 100644 --- a/tests/e2e/Services/Locale/LocaleBase.php +++ b/tests/e2e/Services/Locale/LocaleBase.php @@ -45,7 +45,7 @@ trait LocaleBase $this->assertEquals($response['headers']['status-code'], 200); $this->assertIsArray($response['body']); - $this->assertEquals(194, $response['body']['sum']); + $this->assertEquals(194, $response['body']['total']); $this->assertEquals($response['body']['countries'][0]['name'], 'Afghanistan'); $this->assertEquals($response['body']['countries'][0]['code'], 'AF'); @@ -59,7 +59,7 @@ trait LocaleBase $this->assertEquals($response['headers']['status-code'], 200); $this->assertIsArray($response['body']); - $this->assertEquals(194, $response['body']['sum']); + $this->assertEquals(194, $response['body']['total']); $this->assertEquals($response['body']['countries'][0]['name'], 'Afganistán'); $this->assertEquals($response['body']['countries'][0]['code'], 'AF'); @@ -81,7 +81,7 @@ trait LocaleBase ], $this->getHeaders())); $this->assertEquals($response['headers']['status-code'], 200); - $this->assertEquals(27, $response['body']['sum']); + $this->assertEquals(27, $response['body']['total']); $this->assertIsArray($response['body']['countries']); $this->assertEquals($response['body']['countries'][0]['name'], 'Austria'); $this->assertEquals($response['body']['countries'][0]['code'], 'AT'); @@ -95,7 +95,7 @@ trait LocaleBase ]); $this->assertEquals($response['headers']['status-code'], 200); - $this->assertEquals(27, $response['body']['sum']); + $this->assertEquals(27, $response['body']['total']); $this->assertIsArray($response['body']['countries']); $this->assertEquals($response['body']['countries'][0]['name'], 'Alemania'); $this->assertEquals($response['body']['countries'][0]['code'], 'DE'); @@ -120,7 +120,7 @@ trait LocaleBase $this->assertEquals($response['headers']['status-code'], 200); $this->assertIsArray($response['body']); - $this->assertEquals(194, $response['body']['sum']); + $this->assertEquals(194, $response['body']['total']); $this->assertIsArray($response['body']['phones']); $this->assertEquals($response['body']['phones'][0]['code'], '+1'); $this->assertEquals($response['body']['phones'][0]['countryName'], 'Canada'); @@ -144,7 +144,7 @@ trait LocaleBase ], $this->getHeaders())); $this->assertEquals($response['headers']['status-code'], 200); - $this->assertEquals(7, $response['body']['sum']); + $this->assertEquals(7, $response['body']['total']); $this->assertIsArray($response['body']['continents']); $this->assertEquals($response['body']['continents'][0]['code'], 'AF'); $this->assertEquals($response['body']['continents'][0]['name'], 'Africa'); @@ -157,7 +157,7 @@ trait LocaleBase ]); $this->assertEquals($response['headers']['status-code'], 200); - $this->assertEquals(7, $response['body']['sum']); + $this->assertEquals(7, $response['body']['total']); $this->assertIsArray($response['body']['continents']); $this->assertEquals($response['body']['continents'][0]['code'], 'NA'); $this->assertEquals($response['body']['continents'][0]['name'], 'América del Norte'); @@ -182,7 +182,7 @@ trait LocaleBase $this->assertEquals($response['headers']['status-code'], 200); $this->assertIsArray($response['body']); - $this->assertEquals(117, $response['body']['sum']); + $this->assertEquals(117, $response['body']['total']); $this->assertEquals($response['body']['currencies'][0]['symbol'], '$'); $this->assertEquals($response['body']['currencies'][0]['name'], 'US Dollar'); @@ -205,7 +205,7 @@ trait LocaleBase $this->assertEquals($response['headers']['status-code'], 200); $this->assertIsArray($response['body']); - $this->assertEquals(184, $response['body']['sum']); + $this->assertEquals(184, $response['body']['total']); $this->assertEquals($response['body']['languages'][0]['code'], 'aa'); $this->assertEquals($response['body']['languages'][0]['name'], 'Afar'); @@ -251,7 +251,7 @@ trait LocaleBase // } $this->assertEquals($response['headers']['status-code'], 200); - $this->assertEquals(194, $response['body']['sum']); + $this->assertEquals(194, $response['body']['total']); $response = $this->client->call(Client::METHOD_GET, '/locale/continents', [ 'content-type' => 'application/json', @@ -268,7 +268,7 @@ trait LocaleBase // } $this->assertEquals($response['headers']['status-code'], 200); - $this->assertEquals(7, $response['body']['sum']); + $this->assertEquals(7, $response['body']['total']); } /** diff --git a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php index db0278336..5d1b0937f 100644 --- a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php +++ b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php @@ -110,7 +110,7 @@ class ProjectsConsoleClientTest extends Scope ])); $this->assertEquals($response['headers']['status-code'], 200); - $this->assertEquals($response['body']['sum'], 1); + $this->assertEquals($response['body']['total'], 1); $this->assertIsArray($response['body']['projects']); $this->assertCount(1, $response['body']['projects']); $this->assertEquals($response['body']['projects'][0]['name'], 'Project Test'); @@ -123,7 +123,7 @@ class ProjectsConsoleClientTest extends Scope ])); $this->assertEquals($response['headers']['status-code'], 200); - $this->assertEquals($response['body']['sum'], 1); + $this->assertEquals($response['body']['total'], 1); $this->assertIsArray($response['body']['projects']); $this->assertCount(1, $response['body']['projects']); $this->assertEquals($response['body']['projects'][0]['$id'], $data['projectId']); @@ -861,7 +861,7 @@ class ProjectsConsoleClientTest extends Scope ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(1, $response['body']['sum']); + $this->assertEquals(1, $response['body']['total']); /** * Test for FAILURE @@ -1095,7 +1095,7 @@ class ProjectsConsoleClientTest extends Scope ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(1, $response['body']['sum']); + $this->assertEquals(1, $response['body']['total']); /** * Test for FAILURE @@ -1420,7 +1420,7 @@ class ProjectsConsoleClientTest extends Scope ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(7, $response['body']['sum']); + $this->assertEquals(7, $response['body']['total']); /** * Test for FAILURE @@ -1926,7 +1926,7 @@ class ProjectsConsoleClientTest extends Scope ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(1, $response['body']['sum']); + $this->assertEquals(1, $response['body']['total']); /** * Test for FAILURE diff --git a/tests/e2e/Services/Storage/StorageBase.php b/tests/e2e/Services/Storage/StorageBase.php index 91350cdd4..d55a2eca7 100644 --- a/tests/e2e/Services/Storage/StorageBase.php +++ b/tests/e2e/Services/Storage/StorageBase.php @@ -203,7 +203,7 @@ trait StorageBase 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders())); $this->assertEquals(200, $files['headers']['status-code']); - $this->assertGreaterThan(0, $files['body']['sum']); + $this->assertGreaterThan(0, $files['body']['total']); $this->assertGreaterThan(0, count($files['body']['files'])); /** diff --git a/tests/e2e/Services/Teams/TeamsBase.php b/tests/e2e/Services/Teams/TeamsBase.php index 47ba6c53f..7c8598897 100644 --- a/tests/e2e/Services/Teams/TeamsBase.php +++ b/tests/e2e/Services/Teams/TeamsBase.php @@ -23,8 +23,8 @@ trait TeamsBase $this->assertEquals(201, $response1['headers']['status-code']); $this->assertNotEmpty($response1['body']['$id']); $this->assertEquals('Arsenal', $response1['body']['name']); - $this->assertGreaterThan(-1, $response1['body']['sum']); - $this->assertIsInt($response1['body']['sum']); + $this->assertGreaterThan(-1, $response1['body']['total']); + $this->assertIsInt($response1['body']['total']); $this->assertIsInt($response1['body']['dateCreated']); $teamUid = $response1['body']['$id']; @@ -43,8 +43,8 @@ trait TeamsBase $this->assertNotEmpty($response2['body']['$id']); $this->assertEquals($teamId, $response2['body']['$id']); $this->assertEquals('Manchester United', $response2['body']['name']); - $this->assertGreaterThan(-1, $response2['body']['sum']); - $this->assertIsInt($response2['body']['sum']); + $this->assertGreaterThan(-1, $response2['body']['total']); + $this->assertIsInt($response2['body']['total']); $this->assertIsInt($response2['body']['dateCreated']); $response3 = $this->client->call(Client::METHOD_POST, '/teams', array_merge([ @@ -58,8 +58,8 @@ trait TeamsBase $this->assertEquals(201, $response3['headers']['status-code']); $this->assertNotEmpty($response3['body']['$id']); $this->assertEquals('Newcastle', $response3['body']['name']); - $this->assertGreaterThan(-1, $response3['body']['sum']); - $this->assertIsInt($response3['body']['sum']); + $this->assertGreaterThan(-1, $response3['body']['total']); + $this->assertIsInt($response3['body']['total']); $this->assertIsInt($response3['body']['dateCreated']); /** @@ -94,8 +94,8 @@ trait TeamsBase $this->assertEquals(200, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEquals('Arsenal', $response['body']['name']); - $this->assertGreaterThan(-1, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertGreaterThan(-1, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertIsInt($response['body']['dateCreated']); /** @@ -119,8 +119,8 @@ trait TeamsBase ], $this->getHeaders())); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertGreaterThan(0, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertGreaterThan(0, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertGreaterThan(2, count($response['body']['teams'])); $response = $this->client->call(Client::METHOD_GET, '/teams', array_merge([ @@ -131,8 +131,8 @@ trait TeamsBase ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertGreaterThan(0, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertGreaterThan(0, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertCount(2, $response['body']['teams']); $response = $this->client->call(Client::METHOD_GET, '/teams', array_merge([ @@ -143,8 +143,8 @@ trait TeamsBase ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertGreaterThan(0, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertGreaterThan(0, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertGreaterThan(2, $response['body']['teams']); $response = $this->client->call(Client::METHOD_GET, '/teams', array_merge([ @@ -155,8 +155,8 @@ trait TeamsBase ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertGreaterThan(0, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertGreaterThan(0, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertCount(1, $response['body']['teams']); $this->assertEquals('Manchester United', $response['body']['teams'][0]['name']); @@ -168,8 +168,8 @@ trait TeamsBase ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertGreaterThan(0, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertGreaterThan(0, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertCount(1, $response['body']['teams']); $this->assertEquals('Manchester United', $response['body']['teams'][0]['name']); @@ -181,8 +181,8 @@ trait TeamsBase ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertGreaterThan(0, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertGreaterThan(0, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertCount(1, $response['body']['teams']); $this->assertEquals('Arsenal', $response['body']['teams'][0]['name']); @@ -194,8 +194,8 @@ trait TeamsBase ]); $this->assertEquals(200, $teams['headers']['status-code']); - $this->assertGreaterThan(0, $teams['body']['sum']); - $this->assertIsInt($teams['body']['sum']); + $this->assertGreaterThan(0, $teams['body']['total']); + $this->assertIsInt($teams['body']['total']); $this->assertCount(2, $teams['body']['teams']); $response = $this->client->call(Client::METHOD_GET, '/teams', array_merge([ @@ -207,8 +207,8 @@ trait TeamsBase ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertGreaterThan(0, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertGreaterThan(0, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertCount(1, $response['body']['teams']); $this->assertEquals($teams['body']['teams'][1]['$id'], $response['body']['teams'][0]['$id']); @@ -222,8 +222,8 @@ trait TeamsBase ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertGreaterThan(0, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertGreaterThan(0, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertCount(1, $response['body']['teams']); $this->assertEquals($teams['body']['teams'][0]['$id'], $response['body']['teams'][0]['$id']); @@ -258,8 +258,8 @@ trait TeamsBase $this->assertEquals(201, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEquals('Demo', $response['body']['name']); - $this->assertGreaterThan(-1, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertGreaterThan(-1, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertIsInt($response['body']['dateCreated']); $response = $this->client->call(Client::METHOD_PUT, '/teams/'.$response['body']['$id'], array_merge([ @@ -273,8 +273,8 @@ trait TeamsBase $this->assertEquals(200, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEquals('Demo New', $response['body']['name']); - $this->assertGreaterThan(-1, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertGreaterThan(-1, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertIsInt($response['body']['dateCreated']); /** @@ -309,8 +309,8 @@ trait TeamsBase $this->assertEquals(201, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEquals('Demo', $response['body']['name']); - $this->assertGreaterThan(-1, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertGreaterThan(-1, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertIsInt($response['body']['dateCreated']); $response = $this->client->call(Client::METHOD_DELETE, '/teams/'.$teamUid, array_merge([ diff --git a/tests/e2e/Services/Teams/TeamsBaseClient.php b/tests/e2e/Services/Teams/TeamsBaseClient.php index f7d059d03..617335917 100644 --- a/tests/e2e/Services/Teams/TeamsBaseClient.php +++ b/tests/e2e/Services/Teams/TeamsBaseClient.php @@ -22,7 +22,7 @@ trait TeamsBaseClient ], $this->getHeaders())); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertIsInt($response['body']['sum']); + $this->assertIsInt($response['body']['total']); $this->assertNotEmpty($response['body']['memberships'][0]['$id']); $this->assertEquals($this->getUser()['name'], $response['body']['memberships'][0]['name']); $this->assertEquals($this->getUser()['email'], $response['body']['memberships'][0]['email']); @@ -38,7 +38,7 @@ trait TeamsBaseClient ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertIsInt($response['body']['sum']); + $this->assertIsInt($response['body']['total']); $this->assertNotEmpty($response['body']['memberships'][0]); $this->assertEquals($this->getUser()['name'], $response['body']['memberships'][0]['name']); $this->assertEquals($this->getUser()['email'], $response['body']['memberships'][0]['email']); @@ -52,7 +52,7 @@ trait TeamsBaseClient ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertIsInt($response['body']['sum']); + $this->assertIsInt($response['body']['total']); $this->assertNotEmpty($response['body']['memberships'][0]); $this->assertEquals($this->getUser()['name'], $response['body']['memberships'][0]['name']); $this->assertEquals($this->getUser()['email'], $response['body']['memberships'][0]['email']); @@ -66,9 +66,9 @@ trait TeamsBaseClient ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertIsInt($response['body']['sum']); + $this->assertIsInt($response['body']['total']); $this->assertEmpty($response['body']['memberships']); - $this->assertEquals(0, $response['body']['sum']); + $this->assertEquals(0, $response['body']['total']); /** * Test for FAILURE @@ -191,7 +191,7 @@ trait TeamsBaseClient ], $this->getHeaders())); $this->assertEquals(200, $memberships['headers']['status-code']); - $this->assertIsInt($memberships['body']['sum']); + $this->assertIsInt($memberships['body']['total']); $this->assertNotEmpty($memberships['body']['memberships']); $this->assertCount(2, $memberships['body']['memberships']); @@ -203,7 +203,7 @@ trait TeamsBaseClient ]); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertIsInt($response['body']['sum']); + $this->assertIsInt($response['body']['total']); $this->assertNotEmpty($response['body']['memberships']); $this->assertCount(1, $response['body']['memberships']); $this->assertEquals($memberships['body']['memberships'][1]['$id'], $response['body']['memberships'][0]['$id']); @@ -441,7 +441,7 @@ trait TeamsBaseClient ], $this->getHeaders())); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(2, $response['body']['sum']); + $this->assertEquals(2, $response['body']['total']); $ownerMembershipUid = $response['body']['memberships'][0]['$id']; @@ -496,7 +496,7 @@ trait TeamsBaseClient ], $this->getHeaders())); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(1, $response['body']['sum']); + $this->assertEquals(1, $response['body']['total']); /** * Test for when the owner tries to delete their membership diff --git a/tests/e2e/Services/Teams/TeamsBaseServer.php b/tests/e2e/Services/Teams/TeamsBaseServer.php index 68196e480..41dcc6c84 100644 --- a/tests/e2e/Services/Teams/TeamsBaseServer.php +++ b/tests/e2e/Services/Teams/TeamsBaseServer.php @@ -22,7 +22,7 @@ trait TeamsBaseServer ], $this->getHeaders())); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(0, $response['body']['sum']); + $this->assertEquals(0, $response['body']['total']); /** * Test for FAILURE @@ -201,8 +201,8 @@ trait TeamsBaseServer $this->assertEquals(200, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEquals('Arsenal', $response['body']['name']); - $this->assertEquals(1, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertEquals(1, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertIsInt($response['body']['dateCreated']); @@ -227,8 +227,8 @@ trait TeamsBaseServer $this->assertEquals(200, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEquals('Arsenal', $response['body']['name']); - $this->assertEquals(0, $response['body']['sum']); - $this->assertIsInt($response['body']['sum']); + $this->assertEquals(0, $response['body']['total']); + $this->assertIsInt($response['body']['total']); $this->assertIsInt($response['body']['dateCreated']); } diff --git a/tests/e2e/Services/Users/UsersBase.php b/tests/e2e/Services/Users/UsersBase.php index 3084ff5e2..9113f5517 100644 --- a/tests/e2e/Services/Users/UsersBase.php +++ b/tests/e2e/Services/Users/UsersBase.php @@ -155,8 +155,8 @@ trait UsersBase $this->assertEquals($response['headers']['status-code'], 200); $this->assertIsArray($response['body']); $this->assertIsArray($response['body']['users']); - $this->assertIsInt($response['body']['sum']); - $this->assertEquals(1, $response['body']['sum']); + $this->assertIsInt($response['body']['total']); + $this->assertEquals(1, $response['body']['total']); $this->assertCount(1, $response['body']['users']); $response = $this->client->call(Client::METHOD_GET, '/users', array_merge([ @@ -219,8 +219,8 @@ trait UsersBase $this->assertEquals($users['headers']['status-code'], 200); $this->assertIsArray($users['body']); $this->assertIsArray($users['body']['users']); - $this->assertIsInt($users['body']['sum']); - $this->assertGreaterThan(0, $users['body']['sum']); + $this->assertIsInt($users['body']['total']); + $this->assertGreaterThan(0, $users['body']['total']); return $data; } @@ -443,7 +443,7 @@ trait UsersBase $this->assertEquals($logs['headers']['status-code'], 200); $this->assertIsArray($logs['body']['logs']); - $this->assertIsNumeric($logs['body']['sum']); + $this->assertIsNumeric($logs['body']['total']); $logs = $this->client->call(Client::METHOD_GET, '/users/' . $data['userId'] . '/logs', array_merge([ 'content-type' => 'application/json', @@ -455,7 +455,7 @@ trait UsersBase $this->assertEquals($logs['headers']['status-code'], 200); $this->assertIsArray($logs['body']['logs']); $this->assertLessThanOrEqual(1, count($logs['body']['logs'])); - $this->assertIsNumeric($logs['body']['sum']); + $this->assertIsNumeric($logs['body']['total']); $logs = $this->client->call(Client::METHOD_GET, '/users/' . $data['userId'] . '/logs', array_merge([ 'content-type' => 'application/json', @@ -466,7 +466,7 @@ trait UsersBase $this->assertEquals($logs['headers']['status-code'], 200); $this->assertIsArray($logs['body']['logs']); - $this->assertIsNumeric($logs['body']['sum']); + $this->assertIsNumeric($logs['body']['total']); $logs = $this->client->call(Client::METHOD_GET, '/users/' . $data['userId'] . '/logs', array_merge([ 'content-type' => 'application/json', @@ -479,7 +479,7 @@ trait UsersBase $this->assertEquals($logs['headers']['status-code'], 200); $this->assertIsArray($logs['body']['logs']); $this->assertLessThanOrEqual(1, count($logs['body']['logs'])); - $this->assertIsNumeric($logs['body']['sum']); + $this->assertIsNumeric($logs['body']['total']); } /** diff --git a/tests/e2e/Services/Webhooks/WebhooksBase.php b/tests/e2e/Services/Webhooks/WebhooksBase.php index e0fb3ccce..b8ed3b770 100644 --- a/tests/e2e/Services/Webhooks/WebhooksBase.php +++ b/tests/e2e/Services/Webhooks/WebhooksBase.php @@ -544,8 +544,8 @@ trait WebhooksBase $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals('Arsenal', $webhook['data']['name']); - $this->assertGreaterThan(-1, $webhook['data']['sum']); - $this->assertIsInt($webhook['data']['sum']); + $this->assertGreaterThan(-1, $webhook['data']['total']); + $this->assertIsInt($webhook['data']['total']); $this->assertIsInt($webhook['data']['dateCreated']); /** @@ -584,8 +584,8 @@ trait WebhooksBase $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals('Demo New', $webhook['data']['name']); - $this->assertGreaterThan(-1, $webhook['data']['sum']); - $this->assertIsInt($webhook['data']['sum']); + $this->assertGreaterThan(-1, $webhook['data']['total']); + $this->assertIsInt($webhook['data']['total']); $this->assertIsInt($webhook['data']['dateCreated']); /** @@ -627,8 +627,8 @@ trait WebhooksBase $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals('Chelsea', $webhook['data']['name']); - $this->assertGreaterThan(-1, $webhook['data']['sum']); - $this->assertIsInt($webhook['data']['sum']); + $this->assertGreaterThan(-1, $webhook['data']['total']); + $this->assertIsInt($webhook['data']['total']); $this->assertIsInt($webhook['data']['dateCreated']); /** diff --git a/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php b/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php index 400b28b22..355c8f585 100644 --- a/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php +++ b/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php @@ -310,7 +310,7 @@ class WebhooksCustomClientTest extends Scope $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertEquals($webhook['data']['sum'], 2); + $this->assertEquals($webhook['data']['total'], 2); $this->assertNotEmpty($webhook['data']['sessions'][1]['$id']); $this->assertNotEmpty($webhook['data']['sessions'][1]['userId']); $this->assertIsInt($webhook['data']['sessions'][1]['expire']); From de37c74048c0aff4c7616cd1f7fa32996b6e6547 Mon Sep 17 00:00:00 2001 From: Matej Baco Date: Sun, 27 Feb 2022 11:05:20 +0100 Subject: [PATCH 08/41] Bug fix, Updated 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 +- src/Appwrite/Utopia/Response/Model/BaseList.php | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/config/specs/open-api3-latest-client.json b/app/config/specs/open-api3-latest-client.json index 290df75e5..687aa39f6 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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}}}},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}}}},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"schema":{"type":"string","x-example":"amazon"},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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"},"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":68,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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"}]}},"\/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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":159,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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","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","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":160,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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"}]},"patch":{"summary":"Update Membership Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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). Max length for each role is 32 chars.","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":175,"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,"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"}]}},"\/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":174,"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,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["sum","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["sum","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["sum","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["sum","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["sum","phones"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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"]}},"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"}}}},"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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}}}},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}}}},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"schema":{"type":"string","x-example":"amazon"},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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"},"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":68,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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"}]}},"\/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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":159,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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","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","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":160,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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"}]},"patch":{"summary":"Update Membership Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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). Max length for each role is 32 chars.","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":175,"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,"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"}]}},"\/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":174,"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,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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"]},"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"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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"]}},"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"}}}},"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 d553c3ba4..9c3915938 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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}}}},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}}}},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"schema":{"type":"string","x-example":"amazon"},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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"},"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":68,"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,"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"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":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d"},"in":"query"}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":107,"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,"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":118,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/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":127,"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,"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\/{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":128,"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,"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"},"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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domainList"}}}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"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 Domain","operationId":"projectsCreateDomain","tags":["projects"],"description":"","responses":{"201":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","x-example":null}},"required":["domain"]}}}}}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","x-example":null,"items":{"type":"string"}}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":139,"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,"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":126,"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,"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"},"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]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"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}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["sum","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["sum","collections"]},"indexList":{"description":"Indexes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["sum","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["sum","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["sum","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["sum","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["sum","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["sum","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["sum","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["sum","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["sum","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/project"},"x-example":""}},"required":["sum","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":""}},"required":["sum","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":""}},"required":["sum","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":""}},"required":["sum","platforms"]},"domainList":{"description":"Domains List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":""}},"required":["sum","domains"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["sum","phones"]},"metricList":{"description":"Metric List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":""}},"required":["sum","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"sum":{"type":"integer","description":"Total sum of items in the list.","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\/attributeString"}]},"x-example":""}},"required":["sum","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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}}}},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}}}},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"schema":{"type":"string","x-example":"amazon"},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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"},"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":68,"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,"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"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":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d"},"in":"query"}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":107,"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,"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":118,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/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":127,"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,"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\/{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":128,"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,"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"},"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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domainList"}}}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"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 Domain","operationId":"projectsCreateDomain","tags":["projects"],"description":"","responses":{"201":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","x-example":null}},"required":["domain"]}}}}}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","x-example":null,"items":{"type":"string"}}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":139,"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,"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":126,"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,"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"},"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]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"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}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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"]},"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"]},"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"]},"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"]},"domainList":{"description":"Domains List","type":"object","properties":{"total":{"type":"integer","description":"Total number of domains documents that matched your query.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":""}},"required":["total","domains"]},"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"]},"metricList":{"description":"Metric List","type":"object","properties":{"total":{"type":"integer","description":"Total number of metrics documents that matched your query.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":""}},"required":["total","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total amount of attributes in a 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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"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 3609077d7..9a38bbd3a 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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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"},"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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["sum","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["sum","collections"]},"indexList":{"description":"Indexes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["sum","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["sum","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["sum","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["sum","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["sum","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["sum","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["sum","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["sum","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["sum","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["sum","phones"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"sum":{"type":"integer","description":"Total sum of items in the list.","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\/attributeString"}]},"x-example":""}},"required":["sum","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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"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"}}}},"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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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"},"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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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"]},"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"]},"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"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total amount of attributes in a 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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"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"}}}},"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 ddbdf6e3c..4a786c930 100644 --- a/app/config/specs/swagger2-latest-client.json +++ b/app/config/specs/swagger2-latest-client.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"0.12.3","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"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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","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":68,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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"}]}},"\/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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":159,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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","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","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":160,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":{"email":{"type":"string","description":"Email of the new team member.","default":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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"}]},"patch":{"summary":"Update Membership Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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). Max length for each role is 32 chars.","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":175,"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,"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"}]}},"\/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":174,"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,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"documentList":{"description":"Documents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["sum","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["sum","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["sum","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["sum","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["sum","phones"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"0.12.3","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"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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","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":68,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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"}]}},"\/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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":159,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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","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","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":160,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":{"email":{"type":"string","description":"Email of the new team member.","default":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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"}]},"patch":{"summary":"Update Membership Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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). Max length for each role is 32 chars.","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":175,"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,"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"}]}},"\/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":174,"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,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"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"]},"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"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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"]}},"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 5b65714c1..e6f815ba6 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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","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":68,"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,"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"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":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d","in":"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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"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]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["password"]}}]}},"\/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":127,"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,"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\/{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":128,"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,"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","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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","schema":{"$ref":"#\/definitions\/domainList"}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create Domain","operationId":"projectsCreateDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null}},"required":["domain"]}}]}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","default":null,"x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","default":null,"x-example":null,"items":{"type":"string"}}},"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":139,"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,"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":126,"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,"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"},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":"","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":"","x-example":"[SECRET]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"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":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}]}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"documentList":{"description":"Documents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["sum","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["sum","collections"]},"indexList":{"description":"Indexes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["sum","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["sum","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["sum","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["sum","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["sum","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["sum","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["sum","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["sum","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["sum","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/project"},"x-example":""}},"required":["sum","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":""}},"required":["sum","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":""}},"required":["sum","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":""}},"required":["sum","platforms"]},"domainList":{"description":"Domains List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":""}},"required":["sum","domains"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["sum","phones"]},"metricList":{"description":"Metric List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":""}},"required":["sum","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"sum":{"type":"integer","description":"Total sum of items in the list.","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\/attributeString"}]},"x-example":""}},"required":["sum","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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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","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":68,"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,"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"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":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d","in":"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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"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]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["password"]}}]}},"\/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":127,"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,"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\/{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":128,"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,"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","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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","schema":{"$ref":"#\/definitions\/domainList"}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create Domain","operationId":"projectsCreateDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null}},"required":["domain"]}}]}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","default":null,"x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","default":null,"x-example":null,"items":{"type":"string"}}},"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":139,"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,"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":126,"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,"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"},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":"","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":"","x-example":"[SECRET]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"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":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}]}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"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"]},"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"]},"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"]},"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"]},"domainList":{"description":"Domains List","type":"object","properties":{"total":{"type":"integer","description":"Total number of domains documents that matched your query.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":""}},"required":["total","domains"]},"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"]},"metricList":{"description":"Metric List","type":"object","properties":{"total":{"type":"integer","description":"Total number of metrics documents that matched your query.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":""}},"required":["total","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total amount of attributes in a 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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"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 d0fc65eab..fc01024ac 100644 --- a/app/config/specs/swagger2-latest-server.json +++ b/app/config/specs/swagger2-latest-server.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"0.12.3","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"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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","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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}]}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"documentList":{"description":"Documents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["sum","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["sum","collections"]},"indexList":{"description":"Indexes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["sum","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["sum","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["sum","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["sum","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["sum","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["sum","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["sum","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["sum","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["sum","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["sum","phones"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"sum":{"type":"integer","description":"Total sum of items in the list.","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\/attributeString"}]},"x-example":""}},"required":["sum","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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"0.12.3","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"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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","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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}]}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"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"]},"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"]},"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"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total amount of attributes in a 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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/src/Appwrite/Utopia/Response/Model/BaseList.php b/src/Appwrite/Utopia/Response/Model/BaseList.php index 5555b13b2..84f135773 100644 --- a/src/Appwrite/Utopia/Response/Model/BaseList.php +++ b/src/Appwrite/Utopia/Response/Model/BaseList.php @@ -38,7 +38,7 @@ class BaseList extends Model 'platforms', 'domains', 'memberships', 'teams' ]; - if (\in_array($namesWithCap, $name)) { + if (\in_array($name, $namesWithCap)) { $description = 'Total number of ' . $key . ' documents that matched your query used as reference for offset pagination. When the `total` is more than 5000, it will be capped at 5000, and cursor pagination should be used. Read more about [pagination](https://appwrite.io/docs/pagination).'; } else { $description = 'Total number of ' . $key . ' documents that matched your query.'; From cdc3fd7d4f774fb17a30219a67f8d7202de08666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Mon, 28 Feb 2022 10:14:53 +0100 Subject: [PATCH 09/41] Update src/Appwrite/Utopia/Response/Model/AttributeList.php Co-authored-by: Eldad A. Fux --- src/Appwrite/Utopia/Response/Model/AttributeList.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Appwrite/Utopia/Response/Model/AttributeList.php b/src/Appwrite/Utopia/Response/Model/AttributeList.php index 56dca1c7f..42b768324 100644 --- a/src/Appwrite/Utopia/Response/Model/AttributeList.php +++ b/src/Appwrite/Utopia/Response/Model/AttributeList.php @@ -13,7 +13,7 @@ class AttributeList extends Model $this ->addRule('total', [ 'type' => self::TYPE_INTEGER, - 'description' => 'Total amount of attributes in a collection.', + 'description' => 'Total amount of attributes in the given collection.', 'default' => 0, 'example' => 5, ]) From 70efbf1fb9c3277043ef0255ba320b02beee3bbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Mon, 28 Feb 2022 09:25:38 +0000 Subject: [PATCH 10/41] Updated UI --- app/views/console/account/index.phtml | 6 ++--- app/views/console/comps/logs.phtml | 8 +++--- app/views/console/database/collection.phtml | 12 ++++----- app/views/console/database/index.phtml | 10 +++---- .../console/database/search/documents.phtml | 10 +++---- app/views/console/database/search/files.phtml | 10 +++---- app/views/console/functions/function.phtml | 16 ++++++------ app/views/console/functions/index.phtml | 8 +++--- app/views/console/home/index.phtml | 2 +- app/views/console/index.phtml | 6 ++--- app/views/console/keys/index.phtml | 4 +-- app/views/console/settings/index.phtml | 4 +-- app/views/console/storage/bucket.phtml | 12 ++++----- app/views/console/storage/index.phtml | 10 +++---- app/views/console/users/index.phtml | 26 +++++++++---------- app/views/console/users/team.phtml | 12 ++++----- app/views/console/webhooks/index.phtml | 4 +-- app/workers/deletes.php | 2 +- public/dist/scripts/app-all.js | 2 +- public/dist/scripts/app-dep.js | 2 +- public/scripts/filters.js | 2 +- .../Utopia/Response/Model/AttributeList.php | 2 +- 22 files changed, 85 insertions(+), 85 deletions(-) diff --git a/app/views/console/account/index.phtml b/app/views/console/account/index.phtml index 71f2f8364..023099f59 100644 --- a/app/views/console/account/index.phtml +++ b/app/views/console/account/index.phtml @@ -345,10 +345,10 @@ data-name="securityLogs" data-success="state" data-success-param-state-keys="offset"> - + - +
- +
diff --git a/app/views/console/comps/logs.phtml b/app/views/console/comps/logs.phtml index f238e1a49..62b8f5a73 100644 --- a/app/views/console/comps/logs.phtml +++ b/app/views/console/comps/logs.phtml @@ -20,7 +20,7 @@ $params = $this->getParam('params', []); -
+
Showing logs from the last escape($interval); ?> days
@@ -71,10 +71,10 @@ $params = $this->getParam('params', []); data-name="logs" data-success="state" data-success-param-state-keys="search,offset"> - + - +
getParam('params', []); data-name="logs" data-success="state" data-success-param-state-keys="search,offset"> - +
diff --git a/app/views/console/database/collection.phtml b/app/views/console/database/collection.phtml index 6c788858a..760d53846 100644 --- a/app/views/console/database/collection.phtml +++ b/app/views/console/database/collection.phtml @@ -49,14 +49,14 @@ $logs = $this->getParam('logs', null); data-name="project-documents" x-data="{ project: new URLSearchParams(location.search).get('project') }"> -
+

No Documents Found

Add your first document to get started

-
-
+ documents found
+
+
+ documents found
getParam('logs', null); data-name="project-documents" data-success="state" data-success-param-state-keys="search,offset"> - + - + getParam('logs', null); data-name="project-documents" data-success="state" data-success-param-state-keys="search,offset"> - + diff --git a/app/views/console/database/index.phtml b/app/views/console/database/index.phtml index 6b485a205..e1a6b2bb6 100644 --- a/app/views/console/database/index.phtml +++ b/app/views/console/database/index.phtml @@ -22,7 +22,7 @@ data-scope="sdk" data-name="project-collections"> -
@@ -107,10 +107,10 @@ $rules = $collection->getAttribute('rules', []); data-name="project-documents" data-success="state" data-success-param-state-keys="search,offset"> - + - +
getAttribute('rules', []); data-name="project-documents" data-success="state" data-success-param-state-keys="search,offset"> - + diff --git a/app/views/console/database/search/files.phtml b/app/views/console/database/search/files.phtml index 0a1b4d739..e8e83adc9 100644 --- a/app/views/console/database/search/files.phtml +++ b/app/views/console/database/search/files.phtml @@ -28,13 +28,13 @@ data-success="state" data-success-param-state-keys="search,offset"> -
+

No Files Found

Try a different search term.

-
+
@@ -91,10 +91,10 @@ data-name="project-files" data-success="state" data-success-param-state-keys="search,offset"> - + - +
- + diff --git a/app/views/console/functions/function.phtml b/app/views/console/functions/function.phtml index 6910d2dcf..e41b4e9db 100644 --- a/app/views/console/functions/function.phtml +++ b/app/views/console/functions/function.phtml @@ -68,7 +68,7 @@ $usageStatsEnabled = $this->getParam('usageStatsEnabled', true); data-success="trigger" data-success-param-trigger-events="functions.listDeployments"> -

Deployments

+

Deployments

No Deployments Found

@@ -194,10 +194,10 @@ $usageStatsEnabled = $this->getParam('usageStatsEnabled', true); data-name="project-function-deployments" data-success="state" data-success-param-state-keys="search,offset"> - + - +
getParam('usageStatsEnabled', true); data-name="project-function-deployments" data-success="state" data-success-param-state-keys="search,offset"> - +
@@ -331,7 +331,7 @@ $usageStatsEnabled = $this->getParam('usageStatsEnabled', true);
  • -
    +

    Logs

    @@ -439,10 +439,10 @@ $usageStatsEnabled = $this->getParam('usageStatsEnabled', true); data-name="project-function-executions" data-success="state" data-success-param-state-keys="search,offset"> - + - +
    getParam('usageStatsEnabled', true); data-name="project-function-executions" data-success="state" data-success-param-state-keys="search,offset"> - + diff --git a/app/views/console/functions/index.phtml b/app/views/console/functions/index.phtml index 143be0b75..b22776b0a 100644 --- a/app/views/console/functions/index.phtml +++ b/app/views/console/functions/index.phtml @@ -34,7 +34,7 @@ $runtimes = $this->getParam('runtimes', []);
    -
    functions found
    +
    functions found
      @@ -64,10 +64,10 @@ $runtimes = $this->getParam('runtimes', []); data-name="project-functions" data-success="state" data-success-param-state-keys="search,offset"> - + - +
      getParam('runtimes', []); data-name="project-functions" data-success="state" data-success-param-state-keys="search,offset"> - +
    diff --git a/app/views/console/home/index.phtml b/app/views/console/home/index.phtml index b015ec2be..028e7f3b7 100644 --- a/app/views/console/home/index.phtml +++ b/app/views/console/home/index.phtml @@ -97,7 +97,7 @@ $usageStatsEnabled = $this->getParam('usageStatsEnabled', true);
    -
    N/A
    +
    N/A
    Requests
    diff --git a/app/views/console/index.phtml b/app/views/console/index.phtml index c60a1830d..313f208d2 100644 --- a/app/views/console/index.phtml +++ b/app/views/console/index.phtml @@ -62,10 +62,10 @@ $home = $this->getParam('home', ''); data-name="console-projects" data-success="state" data-success-param-state-keys="search,offset"> - + - +
    getParam('home', ''); data-name="console-projects" data-success="state" data-success-param-state-keys="search,offset"> - + diff --git a/app/views/console/keys/index.phtml b/app/views/console/keys/index.phtml index 8a0ce2c01..6e8238245 100644 --- a/app/views/console/keys/index.phtml +++ b/app/views/console/keys/index.phtml @@ -18,13 +18,13 @@ $scopes = $this->getParam('scopes', []); data-success="trigger" data-success-param-trigger-events="projects.listKeys"> -
    +

    No API Keys Found

    You haven't created any API keys for your project yet.

    -
    +
  • diff --git a/app/views/console/storage/bucket.phtml b/app/views/console/storage/bucket.phtml index dc2723c0f..299c54094 100644 --- a/app/views/console/storage/bucket.phtml +++ b/app/views/console/storage/bucket.phtml @@ -71,14 +71,14 @@ $fileLimitHuman = $this->getParam('fileLimitHuman', 0); data-scope="sdk" data-name="project-files"> -
    +

    No Files Found

    Upload your first file to get started

    -
    -
    files found
    +
    +
    files found
    @@ -238,10 +238,10 @@ $fileLimitHuman = $this->getParam('fileLimitHuman', 0); data-name="project-files" data-success="state" data-success-param-state-keys="search,offset"> - + - +
    getParam('fileLimitHuman', 0); data-name="project-files" data-success="state" data-success-param-state-keys="search,offset"> - + diff --git a/app/views/console/storage/index.phtml b/app/views/console/storage/index.phtml index a141b3ffe..910f5bc94 100644 --- a/app/views/console/storage/index.phtml +++ b/app/views/console/storage/index.phtml @@ -22,7 +22,7 @@ data-scope="sdk" data-name="project-buckets"> -
    @@ -118,10 +118,10 @@ $smtpEnabled = $this->getParam('smtpEnabled', false); data-name="project-users" data-success="state" data-success-param-state-keys="search,offset"> - + - +
    getParam('smtpEnabled', false); data-name="project-users" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -220,14 +220,14 @@ $smtpEnabled = $this->getParam('smtpEnabled', false); data-scope="sdk" data-name="project-teams"> -
    +

    No Teams Found

    Create your first team to get started

    -
    -
    teams found
    +
    +
    teams found
    @@ -247,7 +247,7 @@ $smtpEnabled = $this->getParam('smtpEnabled', false); - + @@ -266,10 +266,10 @@ $smtpEnabled = $this->getParam('smtpEnabled', false); data-name="project-teams" data-success="state" data-success-param-state-keys="search,offset"> - + - +
    getParam('smtpEnabled', false); data-name="project-teams" data-success="state" data-success-param-state-keys="search,offset"> - + diff --git a/app/views/console/users/team.phtml b/app/views/console/users/team.phtml index 8943fdd72..1571c278c 100644 --- a/app/views/console/users/team.phtml +++ b/app/views/console/users/team.phtml @@ -77,14 +77,14 @@ data-scope="sdk" data-name="project-members"> -
    +

    No Memberships Found

    Add your first team member to get started

    -
    -
    memberships found
    +
    +
    memberships found
      @@ -178,10 +178,10 @@ data-name="project-members" data-success="state" data-success-param-state-keys="search,offset"> - + - +
      - +
    diff --git a/app/views/console/webhooks/index.phtml b/app/views/console/webhooks/index.phtml index 92ffbf5c4..93bc72edd 100644 --- a/app/views/console/webhooks/index.phtml +++ b/app/views/console/webhooks/index.phtml @@ -21,13 +21,13 @@ $events = array_keys($this->getParam('events', [])); data-success="trigger" data-success-param-trigger-events="projects.listWebhooks"> -
    +

    No Webhooks Found

    You haven't created any webhooks for your project yet.

    -
    +
    • diff --git a/app/workers/deletes.php b/app/workers/deletes.php index 23297829a..9b0822b5f 100644 --- a/app/workers/deletes.php +++ b/app/workers/deletes.php @@ -227,7 +227,7 @@ class DeletesV1 extends Worker $team = $this->getProjectDB($projectId)->getDocument('teams', $teamId); if (!$team->isEmpty()) { $team = $this->getProjectDB($projectId)->updateDocument('teams', $teamId, new Document(\array_merge($team->getArrayCopy(), [ - 'total' => \max($team->getAttribute('total', 0) - 1, 0), // Ensure that sum >= 0 + 'total' => \max($team->getAttribute('total', 0) - 1, 0), // Ensure that total >= 0 ]))); } } diff --git a/public/dist/scripts/app-all.js b/public/dist/scripts/app-all.js index 5d86a42d2..2d34e5617 100644 --- a/public/dist/scripts/app-all.js +++ b/public/dist/scripts/app-all.js @@ -3044,7 +3044,7 @@ rule.replacement(content,node,this.options)+ whitespace.trailing)} function join(output,replacement){var s1=trimTrailingNewlines(output);var s2=trimLeadingNewlines(replacement);var nls=Math.max(output.length-s1.length,replacement.length-s2.length);var separator='\n\n'.substring(0,nls);return s1+separator+s2} function canConvert(input){return(input!=null&&(typeof input==='string'||(input.nodeType&&(input.nodeType===1||input.nodeType===9||input.nodeType===11))))} -return TurndownService;}());var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(u){var c=/\blang(?:uage)?-([\w-]+)\b/i,n=0,e={},M={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof W?new W(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=l.reach);y+=m.value.length,m=m.next){var b=m.value;if(t.length>n.length)return;if(!(b instanceof W)){var k,x=1;if(h){if(!(k=z(v,y,n,f)))break;var w=k.index,A=k.index+k[0].length,P=y;for(P+=m.value.length;P<=w;)m=m.next,P+=m.value.length;if(P-=m.value.length,y=P,m.value instanceof W)continue;for(var E=m;E!==t.tail&&(Pl.reach&&(l.reach=N);var j=m.prev;O&&(j=I(t,j,O),y+=O.length),q(t,j,x);var C=new W(o,g?M.tokenize(S,g):S,d,S);if(m=I(t,j,C),L&&I(t,m,L),1l.reach&&(l.reach=_.reach)}}}}}}(e,a,n,a.head,0),function(e){var n=[],t=e.head.next;for(;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=M.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=M.hooks.all[e];if(t&&t.length)for(var r,a=0;r=t[a++];)r(n)}},Token:W};function W(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||"").length}function z(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function i(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function I(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function q(e,n,t){for(var r=n.next,a=0;a"+a.content+""},!u.document)return u.addEventListener&&(M.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(M.highlight(r,M.languages[t],t)),a&&u.close()},!1)),M;var t=M.util.currentScript();function r(){M.manual||M.highlightAll()}if(t&&(M.filename=t.src,t.hasAttribute("data-manual")&&(M.manual=!0)),!M.manual){var a=document.readyState;"loading"===a||"interactive"===a&&t&&t.defer?document.addEventListener("DOMContentLoaded",r):window.requestAnimationFrame?window.requestAnimationFrame(r):window.setTimeout(r,16)}return M}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,function(){return a}),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;!function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism);Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript;!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:true|false)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var s=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],i=a.variable[1].inside,o=0;o>/g,function(e,n){return"(?:"+s[+n]+")"})}function t(e,n,s){return RegExp(a(e,n),s||"")}function e(e,n){for(var s=0;s>/g,function(){return"(?:"+e+")"});return e.replace(/<>/g,"[^\\s\\S]")}var n="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",r="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",o="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var d=l(r),p=RegExp(l(n+" "+r+" "+i+" "+o)),c=l(r+" "+i+" "+o),u=l(n+" "+r+" "+o),g=e("<(?:[^<>;=+\\-*/%&|^]|<>)*>",2),b=e("\\((?:[^()]|<>)*\\)",2),h="@?\\b[A-Za-z_]\\w*\\b",f=a("<<0>>(?:\\s*<<1>>)?",[h,g]),m=a("(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*",[c,f]),k="\\[\\s*(?:,\\s*)*\\]",y=a("<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?",[m,k]),w=a("(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?",[a("\\(<<0>>+(?:,<<0>>+)+\\)",[a("[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>",[g,b,k])]),m,k]),v={keyword:p,punctuation:/[<>()?,.:[\]]/},x="'(?:[^\r\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'",$='"(?:\\\\.|[^\\\\"\r\n])*"';s.languages.csharp=s.languages.extend("clike",{string:[{pattern:t("(^|[^$\\\\])<<0>>",['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']),lookbehind:!0,greedy:!0},{pattern:t("(^|[^@$\\\\])<<0>>",[$]),lookbehind:!0,greedy:!0},{pattern:RegExp(x),greedy:!0,alias:"character"}],"class-name":[{pattern:t("(\\busing\\s+static\\s+)<<0>>(?=\\s*;)",[m]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)",[h,w]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+)<<0>>(?=\\s*=)",[h]),lookbehind:!0},{pattern:t("(\\b<<0>>\\s+)<<1>>",[d,f]),lookbehind:!0,inside:v},{pattern:t("(\\bcatch\\s*\\(\\s*)<<0>>",[m]),lookbehind:!0,inside:v},{pattern:t("(\\bwhere\\s+)<<0>>",[h]),lookbehind:!0},{pattern:t("(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>",[y]),lookbehind:!0,inside:v},{pattern:t("\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))",[w,u,h]),inside:v}],keyword:p,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:ul|lu|[dflmu])?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),s.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),s.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:t("([(,]\\s*)<<0>>(?=\\s*:)",[h]),lookbehind:!0,alias:"punctuation"}}),s.languages.insertBefore("csharp","class-name",{namespace:{pattern:t("(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])",[h]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:t("(\\b(?:default|typeof|sizeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))",[b]),lookbehind:!0,alias:"class-name",inside:v},"return-type":{pattern:t("<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))",[w,m]),inside:v,alias:"class-name"},"constructor-invocation":{pattern:t("(\\bnew\\s+)<<0>>(?=\\s*[[({])",[w]),lookbehind:!0,inside:v,alias:"class-name"},"generic-method":{pattern:t("<<0>>\\s*<<1>>(?=\\s*\\()",[h,g]),inside:{function:t("^<<0>>",[h]),generic:{pattern:RegExp(g),alias:"class-name",inside:v}}},"type-list":{pattern:t("\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))",[d,f,h,w,p.source,b,"\\bnew\\s*\\(\\s*\\)"]),lookbehind:!0,inside:{"record-arguments":{pattern:t("(^(?!new\\s*\\()<<0>>\\s*)<<1>>",[f,b]),lookbehind:!0,greedy:!0,inside:s.languages.csharp},keyword:p,"class-name":{pattern:RegExp(w),greedy:!0,inside:v},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var _=$+"|"+x,B=a("/(?![*/])|//[^\r\n]*[\r\n]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>",[_]),E=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),R="\\b(?:assembly|event|field|method|module|param|property|return|type)\\b",P=a("<<0>>(?:\\s*\\(<<1>>*\\))?",[m,E]);s.languages.insertBefore("csharp","class-name",{attribute:{pattern:t("((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])",[R,P]),lookbehind:!0,greedy:!0,inside:{target:{pattern:t("^<<0>>(?=\\s*:)",[R]),alias:"keyword"},"attribute-arguments":{pattern:t("\\(<<0>>*\\)",[E]),inside:s.languages.csharp},"class-name":{pattern:RegExp(m),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var z=":[^}\r\n]+",S=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),j=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[S,z]),A=e(a("[^\"'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<>*\\)",[_]),2),F=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[A,z]);function U(e,n){return{interpolation:{pattern:t("((?:^|[^{])(?:\\{\\{)*)<<0>>",[e]),lookbehind:!0,inside:{"format-string":{pattern:t("(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)",[n,z]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:s.languages.csharp}}},string:/[\s\S]+/}}s.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:t('(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"',[j]),lookbehind:!0,greedy:!0,inside:U(j,S)},{pattern:t('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"',[F]),lookbehind:!0,greedy:!0,inside:U(F,A)}]})}(Prism),Prism.languages.dotnet=Prism.languages.cs=Prism.languages.csharp;!function(e){var a=[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extension|external|extends|factory|final|finally|for|get|hide|if|implements|interface|import|in|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\b/],t="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",s={pattern:RegExp(t+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}}}};e.languages.dart=e.languages.extend("clike",{string:[{pattern:/r?("""|''')[\s\S]*?\1/,greedy:!0},{pattern:/r?(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],"class-name":[s,{pattern:RegExp(t+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])"),lookbehind:!0,inside:s.inside}],keyword:a,operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),e.languages.insertBefore("dart","function",{metadata:{pattern:/@\w+/,alias:"symbol"}}),e.languages.insertBefore("dart","class-name",{generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":s,keyword:a,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})}(Prism);Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|iota|nil|true|false)\b/,number:/(?:\b0x[a-f\d]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[-+]?\d+)?)i?/i,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/}),delete Prism.languages.go["class-name"];Prism.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:Prism.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/[A-Z]\w*Input(?=!?.*$)/m,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},Prism.hooks.add("after-tokenize",function(n){if("graphql"===n.language)for(var o=n.tokens.filter(function(n){return"string"!=typeof n&&"comment"!==n.type&&"scalar"!==n.type}),s=0;s>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":a,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(//g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism);Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json;!function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"],e.languages.insertBefore("kotlin","string",{"raw-string":{pattern:/("""|''')[\s\S]*?\1/,alias:"string"}}),e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}});var n=[{pattern:/\$\{[^}]+\}/,inside:{delimiter:{pattern:/^\$\{|\}$/,alias:"variable"},rest:e.languages.kotlin}},{pattern:/\$\w+/,alias:"variable"}];e.languages.kotlin.string.inside=e.languages.kotlin["raw-string"].inside={interpolation:n},e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(Prism);!function(h){function v(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(h.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,r,e,o){if(a.language===r){var c=a.tokenStack=[];a.code=a.code.replace(e,function(e){if("function"==typeof o&&!o(e))return e;for(var n,t=c.length;-1!==a.code.indexOf(n=v(r,t));)++t;return c[t]=e,n}),a.grammar=h.languages.markup}}},tokenizePlaceholders:{value:function(p,k){if(p.language===k&&p.tokenStack){p.grammar=h.languages[k];var m=0,d=Object.keys(p.tokenStack);!function e(n){for(var t=0;t=d.length);t++){var a=n[t];if("string"==typeof a||a.content&&"string"==typeof a.content){var r=d[m],o=p.tokenStack[r],c="string"==typeof a?a:a.content,i=v(k,r),u=c.indexOf(i);if(-1|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;a.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:e,variable:/\$+(?:\w+\b|(?=\{))/i,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:bool|boolean|int|integer|float|string|object|array)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:bool|int|float|string|object|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*[\w|]\|\s*)(?:null|false)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?[\w|]\|\s*)(?:null|false)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:null|false)\b/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|match|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:n,punctuation:s};var l={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:a.languages.php},r=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:l}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:l}}];a.languages.insertBefore("php","variable",{string:r,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:e,string:r,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:i,operator:n,punctuation:s}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),a.hooks.add("before-tokenize",function(e){if(/<\?/.test(e.code)){a.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/gi)}}),a.hooks.add("after-tokenize",function(e){a.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism);!function(e){var i=Prism.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:{function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:{}}}},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:true|false)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(\W?)(?:!|-(?:eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/},r=i.string[0].inside;r.boolean=i.boolean,r.variable=i.variable,r.function.inside=i}();Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"string-interpolation":{pattern:/(?:f|rf|fr)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|rb|br)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/im,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python;!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#.*/,{pattern:/^=begin\s[\s\S]*?^=end/m,greedy:!0}],"class-name":{pattern:/(\b(?:class)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/});var n={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.languages.ruby}};delete e.languages.ruby.function,e.languages.insertBefore("ruby","keyword",{regex:[{pattern:RegExp("%r(?:"+["([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^])*\\)","\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[^])*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\]","<(?:[^<>\\\\]|\\\\[^])*>"].join("|")+")[egimnosux]{0,6}"),greedy:!0,inside:{interpolation:n}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:n}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:{pattern:/(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,lookbehind:!0},"method-definition":{pattern:/(\bdef\s+)[\w.]+/,lookbehind:!0,inside:{function:/\w+$/,rest:e.languages.ruby}}}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:RegExp("%[qQiIwWxs]?(?:"+["([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^])*\\)","\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[^])*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\]","<(?:[^<>\\\\]|\\\\[^])*>"].join("|")+")"),greedy:!0,inside:{interpolation:n}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:n}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|[a-z_]\w*$/i,alias:"symbol",inside:{punctuation:/^<<[-~]?/}},interpolation:n}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|[a-z_]\w*$/i,alias:"symbol",inside:{punctuation:/^<<[-~]?'|'$/}}}}],e.languages.rb=e.languages.ruby}(Prism);Prism.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp('(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^(])|[^\\\\\r\n"])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp('(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^#])|[^\\\\\r\n])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp("#(?:(?:elseif|if)\\b(?:[ \t]*(?:![ \t]*)?(?:\\b\\w+\\b(?:[ \t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \t]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:true|false)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:true|false)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},Prism.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=Prism.languages.swift});!function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|as|declare|implements|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter;var s=e.languages.extend("typescript",{});delete s["class-name"],e.languages.typescript["class-name"].inside=s,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:s}}}}),e.languages.ts=e.languages.typescript}(Prism);!function(e){var n=/[*&][^\s[\]{},]+/,r=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,t="(?:"+r.source+"(?:[ \t]+"+n.source+")?|"+n.source+"(?:[ \t]+"+r.source+")?)",a="(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*".replace(//g,function(){return"[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]"}),d="\"(?:[^\"\\\\\r\n]|\\\\.)*\"|'(?:[^'\\\\\r\n]|\\\\.)*'";function o(e,n){n=(n||"").replace(/m/g,"")+"m";var r="([:\\-,[{]\\s*(?:\\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\\]|\\}|(?:[\r\n]\\s*)?#))".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return e});return RegExp(r,n)}e.languages.yaml={scalar:{pattern:RegExp("([\\-:]\\s*(?:\\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\\S[^\r\n]*(?:\\2[^\r\n]+)*)".replace(/<>/g,function(){return t})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp("((?:^|[:\\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\\s*:\\s)".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return"(?:"+a+"|"+d+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:o("\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?"),lookbehind:!0,alias:"number"},boolean:{pattern:o("true|false","i"),lookbehind:!0,alias:"important"},null:{pattern:o("null|~","i"),lookbehind:!0,alias:"important"},string:{pattern:o(d),lookbehind:!0,greedy:!0},number:{pattern:o("[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)","i"),lookbehind:!0},tag:r,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(Prism);!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var o="line-numbers",a=/\n(?!$)/g,e=Prism.plugins.lineNumbers={getLine:function(e,n){if("PRE"===e.tagName&&e.classList.contains(o)){var t=e.querySelector(".line-numbers-rows");if(t){var i=parseInt(e.getAttribute("data-start"),10)||1,r=i+(t.children.length-1);n");(i=document.createElement("span")).setAttribute("aria-hidden","true"),i.className="line-numbers-rows",i.innerHTML=l,t.hasAttribute("data-start")&&(t.style.counterReset="linenumber "+(parseInt(t.getAttribute("data-start"),10)-1)),e.element.appendChild(i),u([t]),Prism.hooks.run("line-numbers",e)}}}),Prism.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0})}function u(e){if(0!=(e=e.filter(function(e){var n=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null}(e)["white-space"];return"pre-wrap"===n||"pre-line"===n})).length){var n=e.map(function(e){var n=e.querySelector("code"),t=e.querySelector(".line-numbers-rows");if(n&&t){var i=e.querySelector(".line-numbers-sizer"),r=n.textContent.split(a);i||((i=document.createElement("span")).className="line-numbers-sizer",n.appendChild(i)),i.innerHTML="0",i.style.display="block";var s=i.getBoundingClientRect().height;return i.innerHTML="",{element:e,lines:r,lineHeights:[],oneLinerHeight:s,sizer:i}}}).filter(Boolean);n.forEach(function(e){var i=e.sizer,n=e.lines,r=e.lineHeights,s=e.oneLinerHeight;r[n.length-1]=void 0,n.forEach(function(e,n){if(e&&1=l.reach);y+=m.value.length,m=m.next){var k=m.value;if(t.length>n.length)return;if(!(k instanceof W)){var x,b=1;if(h){if(!(x=z(p,y,n,f))||x.index>=n.length)break;var w=x.index,A=x.index+x[0].length,P=y;for(P+=m.value.length;P<=w;)m=m.next,P+=m.value.length;if(P-=m.value.length,y=P,m.value instanceof W)continue;for(var E=m;E!==t.tail&&(Pl.reach&&(l.reach=j);var C=m.prev;S&&(C=I(t,C,S),y+=S.length),q(t,C,b);var N=new W(o,g?M.tokenize(L,g):L,d,L);if(m=I(t,C,N),O&&I(t,m,O),1l.reach&&(l.reach=_.reach)}}}}}}(e,a,n,a.head,0),function(e){var n=[],t=e.head.next;for(;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=M.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=M.hooks.all[e];if(t&&t.length)for(var r,a=0;r=t[a++];)r(n)}},Token:W};function W(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||"").length}function z(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function i(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function I(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function q(e,n,t){for(var r=n.next,a=0;a"+a.content+""},!u.document)return u.addEventListener&&(M.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(M.highlight(r,M.languages[t],t)),a&&u.close()},!1)),M;var r=M.util.currentScript();function a(){M.manual||M.highlightAll()}if(r&&(M.filename=r.src,r.hasAttribute("data-manual")&&(M.manual=!0)),!M.manual){var l=document.readyState;"loading"===l||"interactive"===l&&r&&r.defer?document.addEventListener("DOMContentLoaded",a):window.requestAnimationFrame?window.requestAnimationFrame(a):window.setTimeout(a,16)}return M}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,function(){return a}),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;!function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism);Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript;!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],s=a.variable[1].inside,i=0;i>/g,function(e,n){return"(?:"+s[+n]+")"})}function t(e,n,s){return RegExp(a(e,n),s||"")}function e(e,n){for(var s=0;s>/g,function(){return"(?:"+e+")"});return e.replace(/<>/g,"[^\\s\\S]")}var n="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",r="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",o="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var d=l(r),p=RegExp(l(n+" "+r+" "+i+" "+o)),c=l(r+" "+i+" "+o),u=l(n+" "+r+" "+o),g=e("<(?:[^<>;=+\\-*/%&|^]|<>)*>",2),b=e("\\((?:[^()]|<>)*\\)",2),h="@?\\b[A-Za-z_]\\w*\\b",f=a("<<0>>(?:\\s*<<1>>)?",[h,g]),m=a("(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*",[c,f]),k="\\[\\s*(?:,\\s*)*\\]",y=a("<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?",[m,k]),w=a("(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?",[a("\\(<<0>>+(?:,<<0>>+)+\\)",[a("[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>",[g,b,k])]),m,k]),v={keyword:p,punctuation:/[<>()?,.:[\]]/},x="'(?:[^\r\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'",$='"(?:\\\\.|[^\\\\"\r\n])*"';s.languages.csharp=s.languages.extend("clike",{string:[{pattern:t("(^|[^$\\\\])<<0>>",['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']),lookbehind:!0,greedy:!0},{pattern:t("(^|[^@$\\\\])<<0>>",[$]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:t("(\\busing\\s+static\\s+)<<0>>(?=\\s*;)",[m]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)",[h,w]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+)<<0>>(?=\\s*=)",[h]),lookbehind:!0},{pattern:t("(\\b<<0>>\\s+)<<1>>",[d,f]),lookbehind:!0,inside:v},{pattern:t("(\\bcatch\\s*\\(\\s*)<<0>>",[m]),lookbehind:!0,inside:v},{pattern:t("(\\bwhere\\s+)<<0>>",[h]),lookbehind:!0},{pattern:t("(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>",[y]),lookbehind:!0,inside:v},{pattern:t("\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))",[w,u,h]),inside:v}],keyword:p,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),s.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),s.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:t("([(,]\\s*)<<0>>(?=\\s*:)",[h]),lookbehind:!0,alias:"punctuation"}}),s.languages.insertBefore("csharp","class-name",{namespace:{pattern:t("(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])",[h]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:t("(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))",[b]),lookbehind:!0,alias:"class-name",inside:v},"return-type":{pattern:t("<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))",[w,m]),inside:v,alias:"class-name"},"constructor-invocation":{pattern:t("(\\bnew\\s+)<<0>>(?=\\s*[[({])",[w]),lookbehind:!0,inside:v,alias:"class-name"},"generic-method":{pattern:t("<<0>>\\s*<<1>>(?=\\s*\\()",[h,g]),inside:{function:t("^<<0>>",[h]),generic:{pattern:RegExp(g),alias:"class-name",inside:v}}},"type-list":{pattern:t("\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))",[d,f,h,w,p.source,b,"\\bnew\\s*\\(\\s*\\)"]),lookbehind:!0,inside:{"record-arguments":{pattern:t("(^(?!new\\s*\\()<<0>>\\s*)<<1>>",[f,b]),lookbehind:!0,greedy:!0,inside:s.languages.csharp},keyword:p,"class-name":{pattern:RegExp(w),greedy:!0,inside:v},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var _=$+"|"+x,B=a("/(?![*/])|//[^\r\n]*[\r\n]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>",[_]),E=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),R="\\b(?:assembly|event|field|method|module|param|property|return|type)\\b",z=a("<<0>>(?:\\s*\\(<<1>>*\\))?",[m,E]);s.languages.insertBefore("csharp","class-name",{attribute:{pattern:t("((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])",[R,z]),lookbehind:!0,greedy:!0,inside:{target:{pattern:t("^<<0>>(?=\\s*:)",[R]),alias:"keyword"},"attribute-arguments":{pattern:t("\\(<<0>>*\\)",[E]),inside:s.languages.csharp},"class-name":{pattern:RegExp(m),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var S=":[^}\r\n]+",j=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),A=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[j,S]),F=e(a("[^\"'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<>*\\)",[_]),2),P=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[F,S]);function U(e,n){return{interpolation:{pattern:t("((?:^|[^{])(?:\\{\\{)*)<<0>>",[e]),lookbehind:!0,inside:{"format-string":{pattern:t("(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)",[n,S]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:s.languages.csharp}}},string:/[\s\S]+/}}s.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:t('(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"',[A]),lookbehind:!0,greedy:!0,inside:U(A,j)},{pattern:t('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"',[P]),lookbehind:!0,greedy:!0,inside:U(P,F)}],char:{pattern:RegExp(x),greedy:!0}}),s.languages.dotnet=s.languages.cs=s.languages.csharp}(Prism);!function(e){var a=[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extends|extension|external|factory|final|finally|for|get|hide|if|implements|import|in|interface|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\b/],n="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",s={pattern:RegExp(n+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}}}};e.languages.dart=e.languages.extend("clike",{"class-name":[s,{pattern:RegExp(n+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])"),lookbehind:!0,inside:s.inside}],keyword:a,operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),e.languages.insertBefore("dart","string",{"string-literal":{pattern:/r?(?:("""|''')[\s\S]*?\1|(["'])(?:\\.|(?!\2)[^\\\r\n])*\2(?!\2))/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,lookbehind:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:e.languages.dart}}},string:/[\s\S]+/}},string:void 0}),e.languages.insertBefore("dart","class-name",{metadata:{pattern:/@\w+/,alias:"function"}}),e.languages.insertBefore("dart","class-name",{generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":s,keyword:a,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})}(Prism);Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),Prism.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete Prism.languages.go["class-name"];Prism.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:Prism.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},Prism.hooks.add("after-tokenize",function(n){if("graphql"===n.language)for(var o=n.tokens.filter(function(n){return"string"!=typeof n&&"comment"!==n.type&&"scalar"!==n.type}),s=0;s>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":a,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(//g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism);Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json;!function(n){n.languages.kotlin=n.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete n.languages.kotlin["class-name"];var e={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:n.languages.kotlin}};n.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:e},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:e},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete n.languages.kotlin.string,n.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),n.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),n.languages.kt=n.languages.kotlin,n.languages.kts=n.languages.kotlin}(Prism);!function(h){function v(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(h.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,r,e,o){if(a.language===r){var c=a.tokenStack=[];a.code=a.code.replace(e,function(e){if("function"==typeof o&&!o(e))return e;for(var n,t=c.length;-1!==a.code.indexOf(n=v(r,t));)++t;return c[t]=e,n}),a.grammar=h.languages.markup}}},tokenizePlaceholders:{value:function(p,k){if(p.language===k&&p.tokenStack){p.grammar=h.languages[k];var m=0,d=Object.keys(p.tokenStack);!function e(n){for(var t=0;t=d.length);t++){var a=n[t];if("string"==typeof a||a.content&&"string"==typeof a.content){var r=d[m],o=p.tokenStack[r],c="string"==typeof a?a:a.content,i=v(k,r),u=c.indexOf(i);if(-1|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;a.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:e,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:n,punctuation:s};var l={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:a.languages.php},r=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:l}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:l}}];a.languages.insertBefore("php","variable",{string:r,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:e,string:r,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:i,operator:n,punctuation:s}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),a.hooks.add("before-tokenize",function(e){if(/<\?/.test(e.code)){a.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g)}}),a.hooks.add("after-tokenize",function(e){a.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism);!function(e){var i=Prism.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:null},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:false|true)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(^|\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/};i.string[0].inside={function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:i},boolean:i.boolean,variable:i.variable}}();Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python;!function(e){e.languages.ruby=e.languages.extend("clike",{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===||[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),e.languages.insertBefore("ruby","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}});var n={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"}}};delete e.languages.ruby.function;var t="(?:"+["([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^]|\\((?:[^()\\\\]|\\\\[^])*\\))*\\)","\\{(?:[^{}\\\\]|\\\\[^]|\\{(?:[^{}\\\\]|\\\\[^])*\\})*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^]|\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\])*\\]","<(?:[^<>\\\\]|\\\\[^]|<(?:[^<>\\\\]|\\\\[^])*>)*>"].join("|")+")",i='(?:"(?:\\\\.|[^"\\\\\r\n])*"|(?:\\b[a-zA-Z_]\\w*|[^\\s\0-\\x7F]+)[?!]?|\\$.)';e.languages.insertBefore("ruby","keyword",{"regex-literal":[{pattern:RegExp("%r"+t+"[egimnosux]{0,6}"),greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp("(^|[^:]):"+i),lookbehind:!0,greedy:!0},{pattern:RegExp("([\r\n{(,][ \t]*)"+i+"(?=:(?!:))"),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),e.languages.insertBefore("ruby","string",{"string-literal":[{pattern:RegExp("%[qQiIwWs]?"+t),greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp("%x"+t),greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}}]}),delete e.languages.ruby.string,e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),e.languages.rb=e.languages.ruby}(Prism);Prism.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp('(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^(])|[^\\\\\r\n"])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp('(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^#])|[^\\\\\r\n])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp("#(?:(?:elseif|if)\\b(?:[ \t]*(?:![ \t]*)?(?:\\b\\w+\\b(?:[ \t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \t]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},Prism.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=Prism.languages.swift});!function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var s=e.languages.extend("typescript",{});delete s["class-name"],e.languages.typescript["class-name"].inside=s,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:s}}}}),e.languages.ts=e.languages.typescript}(Prism);!function(e){var n=/[*&][^\s[\]{},]+/,r=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,t="(?:"+r.source+"(?:[ \t]+"+n.source+")?|"+n.source+"(?:[ \t]+"+r.source+")?)",a="(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*".replace(//g,function(){return"[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]"}),d="\"(?:[^\"\\\\\r\n]|\\\\.)*\"|'(?:[^'\\\\\r\n]|\\\\.)*'";function o(e,n){n=(n||"").replace(/m/g,"")+"m";var r="([:\\-,[{]\\s*(?:\\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\\]|\\}|(?:[\r\n]\\s*)?#))".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return e});return RegExp(r,n)}e.languages.yaml={scalar:{pattern:RegExp("([\\-:]\\s*(?:\\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\\S[^\r\n]*(?:\\2[^\r\n]+)*)".replace(/<>/g,function(){return t})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp("((?:^|[:\\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\\s*:\\s)".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return"(?:"+a+"|"+d+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:o("\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?"),lookbehind:!0,alias:"number"},boolean:{pattern:o("false|true","i"),lookbehind:!0,alias:"important"},null:{pattern:o("null|~","i"),lookbehind:!0,alias:"important"},string:{pattern:o(d),lookbehind:!0,greedy:!0},number:{pattern:o("[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)","i"),lookbehind:!0},tag:r,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(Prism);!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var o="line-numbers",a=/\n(?!$)/g,e=Prism.plugins.lineNumbers={getLine:function(e,n){if("PRE"===e.tagName&&e.classList.contains(o)){var t=e.querySelector(".line-numbers-rows");if(t){var i=parseInt(e.getAttribute("data-start"),10)||1,r=i+(t.children.length-1);n");(i=document.createElement("span")).setAttribute("aria-hidden","true"),i.className="line-numbers-rows",i.innerHTML=l,t.hasAttribute("data-start")&&(t.style.counterReset="linenumber "+(parseInt(t.getAttribute("data-start"),10)-1)),e.element.appendChild(i),u([t]),Prism.hooks.run("line-numbers",e)}}}),Prism.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0})}function u(e){if(0!=(e=e.filter(function(e){var n=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null}(e)["white-space"];return"pre-wrap"===n||"pre-line"===n})).length){var n=e.map(function(e){var n=e.querySelector("code"),t=e.querySelector(".line-numbers-rows");if(n&&t){var i=e.querySelector(".line-numbers-sizer"),r=n.textContent.split(a);i||((i=document.createElement("span")).className="line-numbers-sizer",n.appendChild(i)),i.innerHTML="0",i.style.display="block";var s=i.getBoundingClientRect().height;return i.innerHTML="",{element:e,lines:r,lineHeights:[],oneLinerHeight:s,sizer:i}}}).filter(Boolean);n.forEach(function(e){var i=e.sizer,n=e.lines,r=e.lineHeights,s=e.oneLinerHeight;r[n.length-1]=void 0,n.forEach(function(e,n){if(e&&1=l.reach);y+=m.value.length,m=m.next){var b=m.value;if(t.length>n.length)return;if(!(b instanceof W)){var k,x=1;if(h){if(!(k=z(v,y,n,f)))break;var w=k.index,A=k.index+k[0].length,P=y;for(P+=m.value.length;P<=w;)m=m.next,P+=m.value.length;if(P-=m.value.length,y=P,m.value instanceof W)continue;for(var E=m;E!==t.tail&&(Pl.reach&&(l.reach=N);var j=m.prev;O&&(j=I(t,j,O),y+=O.length),q(t,j,x);var C=new W(o,g?M.tokenize(S,g):S,d,S);if(m=I(t,j,C),L&&I(t,m,L),1l.reach&&(l.reach=_.reach)}}}}}}(e,a,n,a.head,0),function(e){var n=[],t=e.head.next;for(;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=M.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=M.hooks.all[e];if(t&&t.length)for(var r,a=0;r=t[a++];)r(n)}},Token:W};function W(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||"").length}function z(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function i(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function I(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function q(e,n,t){for(var r=n.next,a=0;a"+a.content+""},!u.document)return u.addEventListener&&(M.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(M.highlight(r,M.languages[t],t)),a&&u.close()},!1)),M;var t=M.util.currentScript();function r(){M.manual||M.highlightAll()}if(t&&(M.filename=t.src,t.hasAttribute("data-manual")&&(M.manual=!0)),!M.manual){var a=document.readyState;"loading"===a||"interactive"===a&&t&&t.defer?document.addEventListener("DOMContentLoaded",r):window.requestAnimationFrame?window.requestAnimationFrame(r):window.setTimeout(r,16)}return M}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,function(){return a}),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;!function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism);Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript;!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:true|false)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var s=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],i=a.variable[1].inside,o=0;o>/g,function(e,n){return"(?:"+s[+n]+")"})}function t(e,n,s){return RegExp(a(e,n),s||"")}function e(e,n){for(var s=0;s>/g,function(){return"(?:"+e+")"});return e.replace(/<>/g,"[^\\s\\S]")}var n="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",r="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",o="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var d=l(r),p=RegExp(l(n+" "+r+" "+i+" "+o)),c=l(r+" "+i+" "+o),u=l(n+" "+r+" "+o),g=e("<(?:[^<>;=+\\-*/%&|^]|<>)*>",2),b=e("\\((?:[^()]|<>)*\\)",2),h="@?\\b[A-Za-z_]\\w*\\b",f=a("<<0>>(?:\\s*<<1>>)?",[h,g]),m=a("(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*",[c,f]),k="\\[\\s*(?:,\\s*)*\\]",y=a("<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?",[m,k]),w=a("(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?",[a("\\(<<0>>+(?:,<<0>>+)+\\)",[a("[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>",[g,b,k])]),m,k]),v={keyword:p,punctuation:/[<>()?,.:[\]]/},x="'(?:[^\r\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'",$='"(?:\\\\.|[^\\\\"\r\n])*"';s.languages.csharp=s.languages.extend("clike",{string:[{pattern:t("(^|[^$\\\\])<<0>>",['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']),lookbehind:!0,greedy:!0},{pattern:t("(^|[^@$\\\\])<<0>>",[$]),lookbehind:!0,greedy:!0},{pattern:RegExp(x),greedy:!0,alias:"character"}],"class-name":[{pattern:t("(\\busing\\s+static\\s+)<<0>>(?=\\s*;)",[m]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)",[h,w]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+)<<0>>(?=\\s*=)",[h]),lookbehind:!0},{pattern:t("(\\b<<0>>\\s+)<<1>>",[d,f]),lookbehind:!0,inside:v},{pattern:t("(\\bcatch\\s*\\(\\s*)<<0>>",[m]),lookbehind:!0,inside:v},{pattern:t("(\\bwhere\\s+)<<0>>",[h]),lookbehind:!0},{pattern:t("(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>",[y]),lookbehind:!0,inside:v},{pattern:t("\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))",[w,u,h]),inside:v}],keyword:p,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:ul|lu|[dflmu])?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),s.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),s.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:t("([(,]\\s*)<<0>>(?=\\s*:)",[h]),lookbehind:!0,alias:"punctuation"}}),s.languages.insertBefore("csharp","class-name",{namespace:{pattern:t("(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])",[h]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:t("(\\b(?:default|typeof|sizeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))",[b]),lookbehind:!0,alias:"class-name",inside:v},"return-type":{pattern:t("<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))",[w,m]),inside:v,alias:"class-name"},"constructor-invocation":{pattern:t("(\\bnew\\s+)<<0>>(?=\\s*[[({])",[w]),lookbehind:!0,inside:v,alias:"class-name"},"generic-method":{pattern:t("<<0>>\\s*<<1>>(?=\\s*\\()",[h,g]),inside:{function:t("^<<0>>",[h]),generic:{pattern:RegExp(g),alias:"class-name",inside:v}}},"type-list":{pattern:t("\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))",[d,f,h,w,p.source,b,"\\bnew\\s*\\(\\s*\\)"]),lookbehind:!0,inside:{"record-arguments":{pattern:t("(^(?!new\\s*\\()<<0>>\\s*)<<1>>",[f,b]),lookbehind:!0,greedy:!0,inside:s.languages.csharp},keyword:p,"class-name":{pattern:RegExp(w),greedy:!0,inside:v},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var _=$+"|"+x,B=a("/(?![*/])|//[^\r\n]*[\r\n]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>",[_]),E=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),R="\\b(?:assembly|event|field|method|module|param|property|return|type)\\b",P=a("<<0>>(?:\\s*\\(<<1>>*\\))?",[m,E]);s.languages.insertBefore("csharp","class-name",{attribute:{pattern:t("((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])",[R,P]),lookbehind:!0,greedy:!0,inside:{target:{pattern:t("^<<0>>(?=\\s*:)",[R]),alias:"keyword"},"attribute-arguments":{pattern:t("\\(<<0>>*\\)",[E]),inside:s.languages.csharp},"class-name":{pattern:RegExp(m),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var z=":[^}\r\n]+",S=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),j=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[S,z]),A=e(a("[^\"'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<>*\\)",[_]),2),F=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[A,z]);function U(e,n){return{interpolation:{pattern:t("((?:^|[^{])(?:\\{\\{)*)<<0>>",[e]),lookbehind:!0,inside:{"format-string":{pattern:t("(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)",[n,z]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:s.languages.csharp}}},string:/[\s\S]+/}}s.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:t('(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"',[j]),lookbehind:!0,greedy:!0,inside:U(j,S)},{pattern:t('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"',[F]),lookbehind:!0,greedy:!0,inside:U(F,A)}]})}(Prism),Prism.languages.dotnet=Prism.languages.cs=Prism.languages.csharp;!function(e){var a=[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extension|external|extends|factory|final|finally|for|get|hide|if|implements|interface|import|in|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\b/],t="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",s={pattern:RegExp(t+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}}}};e.languages.dart=e.languages.extend("clike",{string:[{pattern:/r?("""|''')[\s\S]*?\1/,greedy:!0},{pattern:/r?(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],"class-name":[s,{pattern:RegExp(t+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])"),lookbehind:!0,inside:s.inside}],keyword:a,operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),e.languages.insertBefore("dart","function",{metadata:{pattern:/@\w+/,alias:"symbol"}}),e.languages.insertBefore("dart","class-name",{generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":s,keyword:a,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})}(Prism);Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|iota|nil|true|false)\b/,number:/(?:\b0x[a-f\d]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[-+]?\d+)?)i?/i,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/}),delete Prism.languages.go["class-name"];Prism.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:Prism.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/[A-Z]\w*Input(?=!?.*$)/m,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},Prism.hooks.add("after-tokenize",function(n){if("graphql"===n.language)for(var o=n.tokens.filter(function(n){return"string"!=typeof n&&"comment"!==n.type&&"scalar"!==n.type}),s=0;s>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":a,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(//g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism);Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json;!function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"],e.languages.insertBefore("kotlin","string",{"raw-string":{pattern:/("""|''')[\s\S]*?\1/,alias:"string"}}),e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}});var n=[{pattern:/\$\{[^}]+\}/,inside:{delimiter:{pattern:/^\$\{|\}$/,alias:"variable"},rest:e.languages.kotlin}},{pattern:/\$\w+/,alias:"variable"}];e.languages.kotlin.string.inside=e.languages.kotlin["raw-string"].inside={interpolation:n},e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(Prism);!function(h){function v(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(h.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,r,e,o){if(a.language===r){var c=a.tokenStack=[];a.code=a.code.replace(e,function(e){if("function"==typeof o&&!o(e))return e;for(var n,t=c.length;-1!==a.code.indexOf(n=v(r,t));)++t;return c[t]=e,n}),a.grammar=h.languages.markup}}},tokenizePlaceholders:{value:function(p,k){if(p.language===k&&p.tokenStack){p.grammar=h.languages[k];var m=0,d=Object.keys(p.tokenStack);!function e(n){for(var t=0;t=d.length);t++){var a=n[t];if("string"==typeof a||a.content&&"string"==typeof a.content){var r=d[m],o=p.tokenStack[r],c="string"==typeof a?a:a.content,i=v(k,r),u=c.indexOf(i);if(-1|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;a.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:e,variable:/\$+(?:\w+\b|(?=\{))/i,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:bool|boolean|int|integer|float|string|object|array)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:bool|int|float|string|object|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*[\w|]\|\s*)(?:null|false)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?[\w|]\|\s*)(?:null|false)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:null|false)\b/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|match|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:n,punctuation:s};var l={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:a.languages.php},r=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:l}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:l}}];a.languages.insertBefore("php","variable",{string:r,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:e,string:r,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:i,operator:n,punctuation:s}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),a.hooks.add("before-tokenize",function(e){if(/<\?/.test(e.code)){a.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/gi)}}),a.hooks.add("after-tokenize",function(e){a.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism);!function(e){var i=Prism.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:{function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:{}}}},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:true|false)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(\W?)(?:!|-(?:eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/},r=i.string[0].inside;r.boolean=i.boolean,r.variable=i.variable,r.function.inside=i}();Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"string-interpolation":{pattern:/(?:f|rf|fr)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|rb|br)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/im,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python;!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#.*/,{pattern:/^=begin\s[\s\S]*?^=end/m,greedy:!0}],"class-name":{pattern:/(\b(?:class)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/});var n={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.languages.ruby}};delete e.languages.ruby.function,e.languages.insertBefore("ruby","keyword",{regex:[{pattern:RegExp("%r(?:"+["([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^])*\\)","\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[^])*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\]","<(?:[^<>\\\\]|\\\\[^])*>"].join("|")+")[egimnosux]{0,6}"),greedy:!0,inside:{interpolation:n}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:n}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:{pattern:/(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,lookbehind:!0},"method-definition":{pattern:/(\bdef\s+)[\w.]+/,lookbehind:!0,inside:{function:/\w+$/,rest:e.languages.ruby}}}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:RegExp("%[qQiIwWxs]?(?:"+["([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^])*\\)","\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[^])*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\]","<(?:[^<>\\\\]|\\\\[^])*>"].join("|")+")"),greedy:!0,inside:{interpolation:n}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:n}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|[a-z_]\w*$/i,alias:"symbol",inside:{punctuation:/^<<[-~]?/}},interpolation:n}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|[a-z_]\w*$/i,alias:"symbol",inside:{punctuation:/^<<[-~]?'|'$/}}}}],e.languages.rb=e.languages.ruby}(Prism);Prism.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp('(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^(])|[^\\\\\r\n"])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp('(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^#])|[^\\\\\r\n])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp("#(?:(?:elseif|if)\\b(?:[ \t]*(?:![ \t]*)?(?:\\b\\w+\\b(?:[ \t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \t]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:true|false)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:true|false)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},Prism.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=Prism.languages.swift});!function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|as|declare|implements|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter;var s=e.languages.extend("typescript",{});delete s["class-name"],e.languages.typescript["class-name"].inside=s,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:s}}}}),e.languages.ts=e.languages.typescript}(Prism);!function(e){var n=/[*&][^\s[\]{},]+/,r=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,t="(?:"+r.source+"(?:[ \t]+"+n.source+")?|"+n.source+"(?:[ \t]+"+r.source+")?)",a="(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*".replace(//g,function(){return"[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]"}),d="\"(?:[^\"\\\\\r\n]|\\\\.)*\"|'(?:[^'\\\\\r\n]|\\\\.)*'";function o(e,n){n=(n||"").replace(/m/g,"")+"m";var r="([:\\-,[{]\\s*(?:\\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\\]|\\}|(?:[\r\n]\\s*)?#))".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return e});return RegExp(r,n)}e.languages.yaml={scalar:{pattern:RegExp("([\\-:]\\s*(?:\\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\\S[^\r\n]*(?:\\2[^\r\n]+)*)".replace(/<>/g,function(){return t})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp("((?:^|[:\\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\\s*:\\s)".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return"(?:"+a+"|"+d+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:o("\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?"),lookbehind:!0,alias:"number"},boolean:{pattern:o("true|false","i"),lookbehind:!0,alias:"important"},null:{pattern:o("null|~","i"),lookbehind:!0,alias:"important"},string:{pattern:o(d),lookbehind:!0,greedy:!0},number:{pattern:o("[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)","i"),lookbehind:!0},tag:r,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(Prism);!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var o="line-numbers",a=/\n(?!$)/g,e=Prism.plugins.lineNumbers={getLine:function(e,n){if("PRE"===e.tagName&&e.classList.contains(o)){var t=e.querySelector(".line-numbers-rows");if(t){var i=parseInt(e.getAttribute("data-start"),10)||1,r=i+(t.children.length-1);n");(i=document.createElement("span")).setAttribute("aria-hidden","true"),i.className="line-numbers-rows",i.innerHTML=l,t.hasAttribute("data-start")&&(t.style.counterReset="linenumber "+(parseInt(t.getAttribute("data-start"),10)-1)),e.element.appendChild(i),u([t]),Prism.hooks.run("line-numbers",e)}}}),Prism.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0})}function u(e){if(0!=(e=e.filter(function(e){var n=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null}(e)["white-space"];return"pre-wrap"===n||"pre-line"===n})).length){var n=e.map(function(e){var n=e.querySelector("code"),t=e.querySelector(".line-numbers-rows");if(n&&t){var i=e.querySelector(".line-numbers-sizer"),r=n.textContent.split(a);i||((i=document.createElement("span")).className="line-numbers-sizer",n.appendChild(i)),i.innerHTML="0",i.style.display="block";var s=i.getBoundingClientRect().height;return i.innerHTML="",{element:e,lines:r,lineHeights:[],oneLinerHeight:s,sizer:i}}}).filter(Boolean);n.forEach(function(e){var i=e.sizer,n=e.lines,r=e.lineHeights,s=e.oneLinerHeight;r[n.length-1]=void 0,n.forEach(function(e,n){if(e&&1=l.reach);y+=m.value.length,m=m.next){var k=m.value;if(t.length>n.length)return;if(!(k instanceof W)){var x,b=1;if(h){if(!(x=z(p,y,n,f))||x.index>=n.length)break;var w=x.index,A=x.index+x[0].length,P=y;for(P+=m.value.length;P<=w;)m=m.next,P+=m.value.length;if(P-=m.value.length,y=P,m.value instanceof W)continue;for(var E=m;E!==t.tail&&(Pl.reach&&(l.reach=j);var C=m.prev;S&&(C=I(t,C,S),y+=S.length),q(t,C,b);var N=new W(o,g?M.tokenize(L,g):L,d,L);if(m=I(t,C,N),O&&I(t,m,O),1l.reach&&(l.reach=_.reach)}}}}}}(e,a,n,a.head,0),function(e){var n=[],t=e.head.next;for(;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=M.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=M.hooks.all[e];if(t&&t.length)for(var r,a=0;r=t[a++];)r(n)}},Token:W};function W(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||"").length}function z(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function i(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function I(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function q(e,n,t){for(var r=n.next,a=0;a"+a.content+""},!u.document)return u.addEventListener&&(M.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(M.highlight(r,M.languages[t],t)),a&&u.close()},!1)),M;var r=M.util.currentScript();function a(){M.manual||M.highlightAll()}if(r&&(M.filename=r.src,r.hasAttribute("data-manual")&&(M.manual=!0)),!M.manual){var l=document.readyState;"loading"===l||"interactive"===l&&r&&r.defer?document.addEventListener("DOMContentLoaded",a):window.requestAnimationFrame?window.requestAnimationFrame(a):window.setTimeout(a,16)}return M}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,function(){return a}),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;!function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism);Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript;!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],s=a.variable[1].inside,i=0;i>/g,function(e,n){return"(?:"+s[+n]+")"})}function t(e,n,s){return RegExp(a(e,n),s||"")}function e(e,n){for(var s=0;s>/g,function(){return"(?:"+e+")"});return e.replace(/<>/g,"[^\\s\\S]")}var n="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",r="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",o="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var d=l(r),p=RegExp(l(n+" "+r+" "+i+" "+o)),c=l(r+" "+i+" "+o),u=l(n+" "+r+" "+o),g=e("<(?:[^<>;=+\\-*/%&|^]|<>)*>",2),b=e("\\((?:[^()]|<>)*\\)",2),h="@?\\b[A-Za-z_]\\w*\\b",f=a("<<0>>(?:\\s*<<1>>)?",[h,g]),m=a("(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*",[c,f]),k="\\[\\s*(?:,\\s*)*\\]",y=a("<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?",[m,k]),w=a("(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?",[a("\\(<<0>>+(?:,<<0>>+)+\\)",[a("[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>",[g,b,k])]),m,k]),v={keyword:p,punctuation:/[<>()?,.:[\]]/},x="'(?:[^\r\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'",$='"(?:\\\\.|[^\\\\"\r\n])*"';s.languages.csharp=s.languages.extend("clike",{string:[{pattern:t("(^|[^$\\\\])<<0>>",['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']),lookbehind:!0,greedy:!0},{pattern:t("(^|[^@$\\\\])<<0>>",[$]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:t("(\\busing\\s+static\\s+)<<0>>(?=\\s*;)",[m]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)",[h,w]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+)<<0>>(?=\\s*=)",[h]),lookbehind:!0},{pattern:t("(\\b<<0>>\\s+)<<1>>",[d,f]),lookbehind:!0,inside:v},{pattern:t("(\\bcatch\\s*\\(\\s*)<<0>>",[m]),lookbehind:!0,inside:v},{pattern:t("(\\bwhere\\s+)<<0>>",[h]),lookbehind:!0},{pattern:t("(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>",[y]),lookbehind:!0,inside:v},{pattern:t("\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))",[w,u,h]),inside:v}],keyword:p,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),s.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),s.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:t("([(,]\\s*)<<0>>(?=\\s*:)",[h]),lookbehind:!0,alias:"punctuation"}}),s.languages.insertBefore("csharp","class-name",{namespace:{pattern:t("(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])",[h]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:t("(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))",[b]),lookbehind:!0,alias:"class-name",inside:v},"return-type":{pattern:t("<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))",[w,m]),inside:v,alias:"class-name"},"constructor-invocation":{pattern:t("(\\bnew\\s+)<<0>>(?=\\s*[[({])",[w]),lookbehind:!0,inside:v,alias:"class-name"},"generic-method":{pattern:t("<<0>>\\s*<<1>>(?=\\s*\\()",[h,g]),inside:{function:t("^<<0>>",[h]),generic:{pattern:RegExp(g),alias:"class-name",inside:v}}},"type-list":{pattern:t("\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))",[d,f,h,w,p.source,b,"\\bnew\\s*\\(\\s*\\)"]),lookbehind:!0,inside:{"record-arguments":{pattern:t("(^(?!new\\s*\\()<<0>>\\s*)<<1>>",[f,b]),lookbehind:!0,greedy:!0,inside:s.languages.csharp},keyword:p,"class-name":{pattern:RegExp(w),greedy:!0,inside:v},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var _=$+"|"+x,B=a("/(?![*/])|//[^\r\n]*[\r\n]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>",[_]),E=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),R="\\b(?:assembly|event|field|method|module|param|property|return|type)\\b",z=a("<<0>>(?:\\s*\\(<<1>>*\\))?",[m,E]);s.languages.insertBefore("csharp","class-name",{attribute:{pattern:t("((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])",[R,z]),lookbehind:!0,greedy:!0,inside:{target:{pattern:t("^<<0>>(?=\\s*:)",[R]),alias:"keyword"},"attribute-arguments":{pattern:t("\\(<<0>>*\\)",[E]),inside:s.languages.csharp},"class-name":{pattern:RegExp(m),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var S=":[^}\r\n]+",j=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),A=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[j,S]),F=e(a("[^\"'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<>*\\)",[_]),2),P=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[F,S]);function U(e,n){return{interpolation:{pattern:t("((?:^|[^{])(?:\\{\\{)*)<<0>>",[e]),lookbehind:!0,inside:{"format-string":{pattern:t("(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)",[n,S]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:s.languages.csharp}}},string:/[\s\S]+/}}s.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:t('(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"',[A]),lookbehind:!0,greedy:!0,inside:U(A,j)},{pattern:t('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"',[P]),lookbehind:!0,greedy:!0,inside:U(P,F)}],char:{pattern:RegExp(x),greedy:!0}}),s.languages.dotnet=s.languages.cs=s.languages.csharp}(Prism);!function(e){var a=[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extends|extension|external|factory|final|finally|for|get|hide|if|implements|import|in|interface|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\b/],n="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",s={pattern:RegExp(n+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}}}};e.languages.dart=e.languages.extend("clike",{"class-name":[s,{pattern:RegExp(n+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])"),lookbehind:!0,inside:s.inside}],keyword:a,operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),e.languages.insertBefore("dart","string",{"string-literal":{pattern:/r?(?:("""|''')[\s\S]*?\1|(["'])(?:\\.|(?!\2)[^\\\r\n])*\2(?!\2))/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,lookbehind:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:e.languages.dart}}},string:/[\s\S]+/}},string:void 0}),e.languages.insertBefore("dart","class-name",{metadata:{pattern:/@\w+/,alias:"function"}}),e.languages.insertBefore("dart","class-name",{generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":s,keyword:a,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})}(Prism);Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),Prism.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete Prism.languages.go["class-name"];Prism.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:Prism.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},Prism.hooks.add("after-tokenize",function(n){if("graphql"===n.language)for(var o=n.tokens.filter(function(n){return"string"!=typeof n&&"comment"!==n.type&&"scalar"!==n.type}),s=0;s>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":a,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(//g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism);Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json;!function(n){n.languages.kotlin=n.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete n.languages.kotlin["class-name"];var e={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:n.languages.kotlin}};n.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:e},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:e},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete n.languages.kotlin.string,n.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),n.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),n.languages.kt=n.languages.kotlin,n.languages.kts=n.languages.kotlin}(Prism);!function(h){function v(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(h.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,r,e,o){if(a.language===r){var c=a.tokenStack=[];a.code=a.code.replace(e,function(e){if("function"==typeof o&&!o(e))return e;for(var n,t=c.length;-1!==a.code.indexOf(n=v(r,t));)++t;return c[t]=e,n}),a.grammar=h.languages.markup}}},tokenizePlaceholders:{value:function(p,k){if(p.language===k&&p.tokenStack){p.grammar=h.languages[k];var m=0,d=Object.keys(p.tokenStack);!function e(n){for(var t=0;t=d.length);t++){var a=n[t];if("string"==typeof a||a.content&&"string"==typeof a.content){var r=d[m],o=p.tokenStack[r],c="string"==typeof a?a:a.content,i=v(k,r),u=c.indexOf(i);if(-1|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;a.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:e,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:n,punctuation:s};var l={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:a.languages.php},r=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:l}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:l}}];a.languages.insertBefore("php","variable",{string:r,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:e,string:r,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:i,operator:n,punctuation:s}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),a.hooks.add("before-tokenize",function(e){if(/<\?/.test(e.code)){a.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g)}}),a.hooks.add("after-tokenize",function(e){a.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism);!function(e){var i=Prism.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:null},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:false|true)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(^|\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/};i.string[0].inside={function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:i},boolean:i.boolean,variable:i.variable}}();Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python;!function(e){e.languages.ruby=e.languages.extend("clike",{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===||[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),e.languages.insertBefore("ruby","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}});var n={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"}}};delete e.languages.ruby.function;var t="(?:"+["([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^]|\\((?:[^()\\\\]|\\\\[^])*\\))*\\)","\\{(?:[^{}\\\\]|\\\\[^]|\\{(?:[^{}\\\\]|\\\\[^])*\\})*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^]|\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\])*\\]","<(?:[^<>\\\\]|\\\\[^]|<(?:[^<>\\\\]|\\\\[^])*>)*>"].join("|")+")",i='(?:"(?:\\\\.|[^"\\\\\r\n])*"|(?:\\b[a-zA-Z_]\\w*|[^\\s\0-\\x7F]+)[?!]?|\\$.)';e.languages.insertBefore("ruby","keyword",{"regex-literal":[{pattern:RegExp("%r"+t+"[egimnosux]{0,6}"),greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp("(^|[^:]):"+i),lookbehind:!0,greedy:!0},{pattern:RegExp("([\r\n{(,][ \t]*)"+i+"(?=:(?!:))"),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),e.languages.insertBefore("ruby","string",{"string-literal":[{pattern:RegExp("%[qQiIwWs]?"+t),greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp("%x"+t),greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}}]}),delete e.languages.ruby.string,e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),e.languages.rb=e.languages.ruby}(Prism);Prism.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp('(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^(])|[^\\\\\r\n"])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp('(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^#])|[^\\\\\r\n])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp("#(?:(?:elseif|if)\\b(?:[ \t]*(?:![ \t]*)?(?:\\b\\w+\\b(?:[ \t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \t]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},Prism.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=Prism.languages.swift});!function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var s=e.languages.extend("typescript",{});delete s["class-name"],e.languages.typescript["class-name"].inside=s,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:s}}}}),e.languages.ts=e.languages.typescript}(Prism);!function(e){var n=/[*&][^\s[\]{},]+/,r=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,t="(?:"+r.source+"(?:[ \t]+"+n.source+")?|"+n.source+"(?:[ \t]+"+r.source+")?)",a="(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*".replace(//g,function(){return"[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]"}),d="\"(?:[^\"\\\\\r\n]|\\\\.)*\"|'(?:[^'\\\\\r\n]|\\\\.)*'";function o(e,n){n=(n||"").replace(/m/g,"")+"m";var r="([:\\-,[{]\\s*(?:\\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\\]|\\}|(?:[\r\n]\\s*)?#))".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return e});return RegExp(r,n)}e.languages.yaml={scalar:{pattern:RegExp("([\\-:]\\s*(?:\\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\\S[^\r\n]*(?:\\2[^\r\n]+)*)".replace(/<>/g,function(){return t})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp("((?:^|[:\\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\\s*:\\s)".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return"(?:"+a+"|"+d+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:o("\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?"),lookbehind:!0,alias:"number"},boolean:{pattern:o("false|true","i"),lookbehind:!0,alias:"important"},null:{pattern:o("null|~","i"),lookbehind:!0,alias:"important"},string:{pattern:o(d),lookbehind:!0,greedy:!0},number:{pattern:o("[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)","i"),lookbehind:!0},tag:r,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(Prism);!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var o="line-numbers",a=/\n(?!$)/g,e=Prism.plugins.lineNumbers={getLine:function(e,n){if("PRE"===e.tagName&&e.classList.contains(o)){var t=e.querySelector(".line-numbers-rows");if(t){var i=parseInt(e.getAttribute("data-start"),10)||1,r=i+(t.children.length-1);n");(i=document.createElement("span")).setAttribute("aria-hidden","true"),i.className="line-numbers-rows",i.innerHTML=l,t.hasAttribute("data-start")&&(t.style.counterReset="linenumber "+(parseInt(t.getAttribute("data-start"),10)-1)),e.element.appendChild(i),u([t]),Prism.hooks.run("line-numbers",e)}}}),Prism.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0})}function u(e){if(0!=(e=e.filter(function(e){var n=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null}(e)["white-space"];return"pre-wrap"===n||"pre-line"===n})).length){var n=e.map(function(e){var n=e.querySelector("code"),t=e.querySelector(".line-numbers-rows");if(n&&t){var i=e.querySelector(".line-numbers-sizer"),r=n.textContent.split(a);i||((i=document.createElement("span")).className="line-numbers-sizer",n.appendChild(i)),i.innerHTML="0",i.style.display="block";var s=i.getBoundingClientRect().height;return i.innerHTML="",{element:e,lines:r,lineHeights:[],oneLinerHeight:s,sizer:i}}}).filter(Boolean);n.forEach(function(e){var i=e.sizer,n=e.lines,r=e.lineHeights,s=e.oneLinerHeight;r[n.length-1]=void 0,n.forEach(function(e,n){if(e&&1addRule('total', [ 'type' => self::TYPE_INTEGER, - 'description' => 'Total amount of attributes in the given collection.', + 'description' => 'Total number of attributes in the given collection.', 'default' => 0, 'example' => 5, ]) From 4c852231831e30061af1c8c1b5a98f16afc2e713 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Mon, 28 Feb 2022 09:26:55 +0000 Subject: [PATCH 11/41] More UI changes --- app/views/console/account/index.phtml | 4 ++-- app/views/console/comps/logs.phtml | 4 ++-- app/views/console/database/collection.phtml | 4 ++-- app/views/console/database/index.phtml | 4 ++-- app/views/console/database/search/documents.phtml | 4 ++-- app/views/console/database/search/files.phtml | 4 ++-- app/views/console/functions/function.phtml | 8 ++++---- app/views/console/functions/index.phtml | 4 ++-- app/views/console/index.phtml | 4 ++-- app/views/console/storage/bucket.phtml | 4 ++-- app/views/console/storage/index.phtml | 4 ++-- app/views/console/users/index.phtml | 8 ++++---- app/views/console/users/team.phtml | 4 ++-- 13 files changed, 30 insertions(+), 30 deletions(-) diff --git a/app/views/console/account/index.phtml b/app/views/console/account/index.phtml index 023099f59..bf026b158 100644 --- a/app/views/console/account/index.phtml +++ b/app/views/console/account/index.phtml @@ -345,7 +345,7 @@ data-name="securityLogs" data-success="state" data-success-param-state-keys="offset"> - + @@ -359,7 +359,7 @@ data-name="securityLogs" data-success="state" data-success-param-state-keys="offset"> - +
    diff --git a/app/views/console/comps/logs.phtml b/app/views/console/comps/logs.phtml index 62b8f5a73..d0f8861ec 100644 --- a/app/views/console/comps/logs.phtml +++ b/app/views/console/comps/logs.phtml @@ -71,7 +71,7 @@ $params = $this->getParam('params', []); data-name="logs" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -89,7 +89,7 @@ $params = $this->getParam('params', []); data-name="logs" data-success="state" data-success-param-state-keys="search,offset"> - +
    diff --git a/app/views/console/database/collection.phtml b/app/views/console/database/collection.phtml index 760d53846..af5350779 100644 --- a/app/views/console/database/collection.phtml +++ b/app/views/console/database/collection.phtml @@ -108,7 +108,7 @@ $logs = $this->getParam('logs', null); data-name="project-documents" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -124,7 +124,7 @@ $logs = $this->getParam('logs', null); data-name="project-documents" data-success="state" data-success-param-state-keys="search,offset"> - +
    diff --git a/app/views/console/database/index.phtml b/app/views/console/database/index.phtml index e1a6b2bb6..341c3c598 100644 --- a/app/views/console/database/index.phtml +++ b/app/views/console/database/index.phtml @@ -53,7 +53,7 @@ data-name="project-collections" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -68,7 +68,7 @@ data-name="project-collections" data-success="state" data-success-param-state-keys="search,offset"> - + diff --git a/app/views/console/database/search/documents.phtml b/app/views/console/database/search/documents.phtml index 058961f55..5bdd78928 100644 --- a/app/views/console/database/search/documents.phtml +++ b/app/views/console/database/search/documents.phtml @@ -107,7 +107,7 @@ $rules = $collection->getAttribute('rules', []); data-name="project-documents" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -123,7 +123,7 @@ $rules = $collection->getAttribute('rules', []); data-name="project-documents" data-success="state" data-success-param-state-keys="search,offset"> - + diff --git a/app/views/console/database/search/files.phtml b/app/views/console/database/search/files.phtml index e8e83adc9..2b8f7dccb 100644 --- a/app/views/console/database/search/files.phtml +++ b/app/views/console/database/search/files.phtml @@ -91,7 +91,7 @@ data-name="project-files" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -106,7 +106,7 @@ data-name="project-files" data-success="state" data-success-param-state-keys="search,offset"> - + diff --git a/app/views/console/functions/function.phtml b/app/views/console/functions/function.phtml index e41b4e9db..377aa9e68 100644 --- a/app/views/console/functions/function.phtml +++ b/app/views/console/functions/function.phtml @@ -194,7 +194,7 @@ $usageStatsEnabled = $this->getParam('usageStatsEnabled', true); data-name="project-function-deployments" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -210,7 +210,7 @@ $usageStatsEnabled = $this->getParam('usageStatsEnabled', true); data-name="project-function-deployments" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -439,7 +439,7 @@ $usageStatsEnabled = $this->getParam('usageStatsEnabled', true); data-name="project-function-executions" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -455,7 +455,7 @@ $usageStatsEnabled = $this->getParam('usageStatsEnabled', true); data-name="project-function-executions" data-success="state" data-success-param-state-keys="search,offset"> - + diff --git a/app/views/console/functions/index.phtml b/app/views/console/functions/index.phtml index b22776b0a..445112df8 100644 --- a/app/views/console/functions/index.phtml +++ b/app/views/console/functions/index.phtml @@ -64,7 +64,7 @@ $runtimes = $this->getParam('runtimes', []); data-name="project-functions" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -79,7 +79,7 @@ $runtimes = $this->getParam('runtimes', []); data-name="project-functions" data-success="state" data-success-param-state-keys="search,offset"> - + diff --git a/app/views/console/index.phtml b/app/views/console/index.phtml index 313f208d2..68933937f 100644 --- a/app/views/console/index.phtml +++ b/app/views/console/index.phtml @@ -62,7 +62,7 @@ $home = $this->getParam('home', ''); data-name="console-projects" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -78,7 +78,7 @@ $home = $this->getParam('home', ''); data-name="console-projects" data-success="state" data-success-param-state-keys="search,offset"> - + diff --git a/app/views/console/storage/bucket.phtml b/app/views/console/storage/bucket.phtml index 299c54094..054473ec0 100644 --- a/app/views/console/storage/bucket.phtml +++ b/app/views/console/storage/bucket.phtml @@ -238,7 +238,7 @@ $fileLimitHuman = $this->getParam('fileLimitHuman', 0); data-name="project-files" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -254,7 +254,7 @@ $fileLimitHuman = $this->getParam('fileLimitHuman', 0); data-name="project-files" data-success="state" data-success-param-state-keys="search,offset"> - + diff --git a/app/views/console/storage/index.phtml b/app/views/console/storage/index.phtml index 910f5bc94..69ae9ad7d 100644 --- a/app/views/console/storage/index.phtml +++ b/app/views/console/storage/index.phtml @@ -52,7 +52,7 @@ data-name="project-buckets" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -67,7 +67,7 @@ data-name="project-buckets" data-success="state" data-success-param-state-keys="search,offset"> - + diff --git a/app/views/console/users/index.phtml b/app/views/console/users/index.phtml index 12f218f5d..10baf7441 100644 --- a/app/views/console/users/index.phtml +++ b/app/views/console/users/index.phtml @@ -118,7 +118,7 @@ $smtpEnabled = $this->getParam('smtpEnabled', false); data-name="project-users" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -133,7 +133,7 @@ $smtpEnabled = $this->getParam('smtpEnabled', false); data-name="project-users" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -266,7 +266,7 @@ $smtpEnabled = $this->getParam('smtpEnabled', false); data-name="project-teams" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -281,7 +281,7 @@ $smtpEnabled = $this->getParam('smtpEnabled', false); data-name="project-teams" data-success="state" data-success-param-state-keys="search,offset"> - + diff --git a/app/views/console/users/team.phtml b/app/views/console/users/team.phtml index 1571c278c..af1be485d 100644 --- a/app/views/console/users/team.phtml +++ b/app/views/console/users/team.phtml @@ -178,7 +178,7 @@ data-name="project-members" data-success="state" data-success-param-state-keys="search,offset"> - + @@ -194,7 +194,7 @@ data-name="project-members" data-success="state" data-success-param-state-keys="search,offset"> - + From bdc8d498a7c9732bfd932facf1320d865cffa37a Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Mon, 28 Feb 2022 09:33:26 +0000 Subject: [PATCH 12/41] Update V12.php --- src/Appwrite/Utopia/Response/Filters/V12.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Appwrite/Utopia/Response/Filters/V12.php b/src/Appwrite/Utopia/Response/Filters/V12.php index 7977144af..3c147c70d 100644 --- a/src/Appwrite/Utopia/Response/Filters/V12.php +++ b/src/Appwrite/Utopia/Response/Filters/V12.php @@ -70,7 +70,6 @@ class V12 extends Filter protected function parseFunction(array $content) { - $content['execute'] = implode(' ', $content['execute']); $content['tag'] = $content['deployment']; return $content; From e75e9d3c6219ec8343abc19dd5e1e1b543ca1573 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Mon, 28 Feb 2022 17:06:25 +0000 Subject: [PATCH 13/41] Revie update --- src/Appwrite/Utopia/Response/Model/BaseList.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Appwrite/Utopia/Response/Model/BaseList.php b/src/Appwrite/Utopia/Response/Model/BaseList.php index 84f135773..404f2ad65 100644 --- a/src/Appwrite/Utopia/Response/Model/BaseList.php +++ b/src/Appwrite/Utopia/Response/Model/BaseList.php @@ -39,7 +39,7 @@ class BaseList extends Model ]; if (\in_array($name, $namesWithCap)) { - $description = 'Total number of ' . $key . ' documents that matched your query used as reference for offset pagination. When the `total` is more than 5000, it will be capped at 5000, and cursor pagination should be used. Read more about [pagination](https://appwrite.io/docs/pagination).'; + $description = 'Total number of ' . $key . ' documents that matched your query used as reference for offset pagination. When the `total` number of ' . $key . ' documents available is greater than 5000, total returned will be capped at 5000, and cursor pagination should be used. Read more about [pagination](https://appwrite.io/docs/pagination).'; } else { $description = 'Total number of ' . $key . ' documents that matched your query.'; } From e24fb55f68e3ed4ff87c4470b2e40841c2eff89f Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Mon, 28 Feb 2022 20:54:20 +0000 Subject: [PATCH 14/41] Address Comments --- app/controllers/general.php | 14 +++++++------- src/Appwrite/Utopia/Response/Filters/V12.php | 7 ++++++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/controllers/general.php b/app/controllers/general.php index 4c0ae05d8..06209fcd2 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -13,13 +13,13 @@ use Utopia\Config\Config; use Utopia\Domains\Domain; use Appwrite\Auth\Auth; use Appwrite\Network\Validator\Origin; -use Appwrite\Utopia\Response\Filters\V11; +use Appwrite\Utopia\Response\Filters\V11 as ResponseV11; +use Appwrite\Utopia\Response\Filters\V12 as ResponseV12; use Utopia\CLI\Console; use Utopia\Database\Document; use Utopia\Database\Query; use Utopia\Database\Validator\Authorization; -use Appwrite\Utopia\Request\Filters\V12; -use Appwrite\Utopia\Response\Filters\V12 as FiltersV12; +use Appwrite\Utopia\Request\Filters\V12 as RequestV12; use Utopia\Validator\Text; Config::setParam('domainVerification', false); @@ -47,7 +47,7 @@ App::init(function ($utopia, $request, $response, $console, $project, $dbForCons if ($requestFormat) { switch($requestFormat) { case version_compare ($requestFormat , '0.12.0', '<') : - Request::setFilter(new V12()); + Request::setFilter(new RequestV12()); break; default: Request::setFilter(null); @@ -158,11 +158,11 @@ App::init(function ($utopia, $request, $response, $console, $project, $dbForCons $responseFormat = $request->getHeader('x-appwrite-response-format', App::getEnv('_APP_SYSTEM_RESPONSE_FORMAT', '')); if ($responseFormat) { switch($responseFormat) { - case version_compare ($responseFormat , '0.12.3', '<='): - Response::setFilter(new FiltersV12()); + case version_compare ($responseFormat , '0.12.4', '<='): + Response::setFilter(new ResponseV12()); break; case version_compare ($responseFormat , '0.11.0', '<=') : - Response::setFilter(new V11()); + Response::setFilter(new ResponseV11()); break; default: Response::setFilter(null); diff --git a/src/Appwrite/Utopia/Response/Filters/V12.php b/src/Appwrite/Utopia/Response/Filters/V12.php index 3c147c70d..b93878eac 100644 --- a/src/Appwrite/Utopia/Response/Filters/V12.php +++ b/src/Appwrite/Utopia/Response/Filters/V12.php @@ -20,22 +20,27 @@ class V12 extends Filter break; case Response::MODEL_SESSION: $parsedResponse = $this->parseSession($content); + break; case Response::MODEL_FILE: $parsedResponse = $this->parseFile($content); + break; case Response::MODEL_FUNCTION: $parsedResponse = $this->parseFunction($content); + break; case Response::MODEL_EXECUTION: $parsedResponse = $this->parseExecution($content); + break; case Response::MODEL_USAGE_BUCKETS: $parsedResponse = $this->parseUsageBuckets($content); + break; case Response::MODEL_USAGE_STORAGE: $parsedResponse = $this->parseUsageStorage($content); - + break; } return $parsedResponse; From 9cc67066ce6c2bf4aa192aaaed85af4420e4805b Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Mon, 28 Feb 2022 20:55:18 +0000 Subject: [PATCH 15/41] address Comments --- app/controllers/general.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/controllers/general.php b/app/controllers/general.php index efab455eb..45c45e80e 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -13,13 +13,13 @@ use Utopia\Config\Config; use Utopia\Domains\Domain; use Appwrite\Auth\Auth; use Appwrite\Network\Validator\Origin; -use Appwrite\Utopia\Response\Filters\V11; +use Appwrite\Utopia\Response\Filters\V11 as ResponseV11; use Utopia\CLI\Console; use Utopia\Database\Document; use Utopia\Database\Query; use Utopia\Database\Validator\Authorization; -use Appwrite\Utopia\Request\Filters\V12; -use Appwrite\Utopia\Request\Filters\V13; +use Appwrite\Utopia\Request\Filters\V12 as RequestV12; +use Appwrite\Utopia\Request\Filters\V13 as RequestV13; use Utopia\Validator\Text; Config::setParam('domainVerification', false); @@ -47,10 +47,10 @@ App::init(function ($utopia, $request, $response, $console, $project, $dbForCons if ($requestFormat) { switch($requestFormat) { case version_compare ($requestFormat , '0.13.0', '<') : - Request::setFilter(new V13()); + Request::setFilter(new RequestV13()); break; case version_compare ($requestFormat , '0.12.0', '<') : - Request::setFilter(new V12()); + Request::setFilter(new RequestV12()); break; default: Request::setFilter(null); @@ -162,7 +162,7 @@ App::init(function ($utopia, $request, $response, $console, $project, $dbForCons if ($responseFormat) { switch($responseFormat) { case version_compare ($responseFormat , '0.11.0', '<=') : - Response::setFilter(new V11()); + Response::setFilter(new ResponseV11()); break; default: Response::setFilter(null); From b32fa16a68277b9d289ead4577134013c0628749 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 1 Mar 2022 13:45:24 +1300 Subject: [PATCH 16/41] Handle JSON rules as objects instead of strings to allow nested map attributes --- app/config/specs/swagger2-latest-console.json | 2 +- app/config/specs/swagger2-latest-server.json | 2 +- src/Appwrite/Specification/Format/OpenAPI3.php | 15 ++++++++------- src/Appwrite/Specification/Format/Swagger2.php | 18 +++++++++--------- 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/app/config/specs/swagger2-latest-console.json b/app/config/specs/swagger2-latest-console.json index 5b65714c1..145eab267 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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","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":68,"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,"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"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":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d","in":"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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"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]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["password"]}}]}},"\/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":127,"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,"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\/{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":128,"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,"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","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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","schema":{"$ref":"#\/definitions\/domainList"}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create Domain","operationId":"projectsCreateDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null}},"required":["domain"]}}]}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","default":null,"x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","default":null,"x-example":null,"items":{"type":"string"}}},"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":139,"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,"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":126,"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,"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"},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":"","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":"","x-example":"[SECRET]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"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":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}]}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"documentList":{"description":"Documents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["sum","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["sum","collections"]},"indexList":{"description":"Indexes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["sum","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["sum","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["sum","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["sum","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["sum","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["sum","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["sum","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["sum","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["sum","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/project"},"x-example":""}},"required":["sum","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":""}},"required":["sum","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":""}},"required":["sum","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":""}},"required":["sum","platforms"]},"domainList":{"description":"Domains List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":""}},"required":["sum","domains"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["sum","phones"]},"metricList":{"description":"Metric List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":""}},"required":["sum","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"sum":{"type":"integer","description":"Total sum of items in the list.","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\/attributeString"}]},"x-example":""}},"required":["sum","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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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","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":68,"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,"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"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":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d","in":"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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"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]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["password"]}}]}},"\/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":127,"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,"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\/{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":128,"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,"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","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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","schema":{"$ref":"#\/definitions\/domainList"}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create Domain","operationId":"projectsCreateDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null}},"required":["domain"]}}]}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","default":null,"x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","default":null,"x-example":null,"items":{"type":"string"}}},"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":139,"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,"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":126,"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,"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"},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":"","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":"","x-example":"[SECRET]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"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":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}]}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"documentList":{"description":"Documents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["sum","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["sum","collections"]},"indexList":{"description":"Indexes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["sum","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["sum","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["sum","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["sum","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["sum","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["sum","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["sum","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["sum","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["sum","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/project"},"x-example":""}},"required":["sum","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":""}},"required":["sum","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":""}},"required":["sum","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":""}},"required":["sum","platforms"]},"domainList":{"description":"Domains List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":""}},"required":["sum","domains"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["sum","phones"]},"metricList":{"description":"Metric List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":""}},"required":["sum","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"sum":{"type":"integer","description":"Total sum of items in the list.","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\/attributeString"}]},"x-example":""}},"required":["sum","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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"object","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"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 d0fc65eab..a24c2bea4 100644 --- a/app/config/specs/swagger2-latest-server.json +++ b/app/config/specs/swagger2-latest-server.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"0.12.3","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"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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","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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}]}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"documentList":{"description":"Documents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["sum","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["sum","collections"]},"indexList":{"description":"Indexes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["sum","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["sum","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["sum","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["sum","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["sum","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["sum","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["sum","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["sum","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["sum","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["sum","phones"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"sum":{"type":"integer","description":"Total sum of items in the list.","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\/attributeString"}]},"x-example":""}},"required":["sum","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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"0.12.3","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"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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","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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}]}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"documentList":{"description":"Documents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["sum","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["sum","collections"]},"indexList":{"description":"Indexes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["sum","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["sum","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["sum","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["sum","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["sum","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["sum","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["sum","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["sum","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["sum","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["sum","phones"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"sum":{"type":"integer","description":"Total sum of items in the list.","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\/attributeString"}]},"x-example":""}},"required":["sum","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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"object","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"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/OpenAPI3.php b/src/Appwrite/Specification/Format/OpenAPI3.php index 214b9d858..1e4d323fc 100644 --- a/src/Appwrite/Specification/Format/OpenAPI3.php +++ b/src/Appwrite/Specification/Format/OpenAPI3.php @@ -453,10 +453,14 @@ class OpenAPI3 extends Format switch ($rule['type']) { case 'string': - case 'json': $type = 'string'; break; + case 'json': + $type = 'object'; + $output['components']['schemas'][$model->getType()]['properties'][$name]['additionalProperties'] = true; + break; + case 'integer': $type = 'integer'; $format = 'int32'; @@ -516,9 +520,6 @@ class OpenAPI3 extends Format $output['components']['schemas'][$model->getType()]['properties'][$name]['items']['format'] = $format; } - if($items) { - $output['components']['schemas'][$model->getType()]['properties'][$name]['items'] = $items; - } } else { $output['components']['schemas'][$model->getType()]['properties'][$name] = [ 'type' => $type, @@ -530,9 +531,9 @@ class OpenAPI3 extends Format $output['components']['schemas'][$model->getType()]['properties'][$name]['format'] = $format; } - if($items) { - $output['components']['schemas'][$model->getType()]['properties'][$name]['items'] = $items; - } + } + if($items) { + $output['components']['schemas'][$model->getType()]['properties'][$name]['items'] = $items; } if (!in_array($name, $required)) { $output['components']['schemas'][$model->getType()]['properties'][$name]['nullable'] = true; diff --git a/src/Appwrite/Specification/Format/Swagger2.php b/src/Appwrite/Specification/Format/Swagger2.php index e24030ea7..f0303e214 100644 --- a/src/Appwrite/Specification/Format/Swagger2.php +++ b/src/Appwrite/Specification/Format/Swagger2.php @@ -444,10 +444,14 @@ class Swagger2 extends Format switch ($rule['type']) { case 'string': - case 'json': $type = 'string'; break; + case 'json': + $type = 'object'; + $output['definitions'][$model->getType()]['properties'][$name]['additionalProperties'] = true; + break; + case 'integer': $type = 'integer'; $format = 'int32'; @@ -469,7 +473,7 @@ class Swagger2 extends Format default: $type = 'object'; - $rule['type'] = ($rule['type']) ? $rule['type'] : 'none'; + $rule['type'] = ($rule['type']) ?: 'none'; if(\is_array($rule['type'])) { if($rule['array']) { @@ -508,14 +512,10 @@ class Swagger2 extends Format $output['definitions'][$model->getType()]['properties'][$name]['items']['format'] = $format; } - if($items) { - $output['definitions'][$model->getType()]['properties'][$name]['items'] = $items; - } } else { $output['definitions'][$model->getType()]['properties'][$name] = [ 'type' => $type, 'description' => $rule['description'] ?? '', - //'default' => $rule['default'] ?? null, 'x-example' => $rule['example'] ?? null, ]; @@ -523,9 +523,9 @@ class Swagger2 extends Format $output['definitions'][$model->getType()]['properties'][$name]['format'] = $format; } - if($items) { - $output['definitions'][$model->getType()]['properties'][$name]['items'] = $items; - } + } + if($items) { + $output['definitions'][$model->getType()]['properties'][$name]['items'] = $items; } if (!in_array($name, $required)) { $output['definitions'][$model->getType()]['properties'][$name]['x-nullable'] = true; From 79c47ccb1395ebb676fece9353fcc6c5dff388fa Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 1 Mar 2022 17:50:25 +1300 Subject: [PATCH 17/41] Add other expected attributes for large file upload mock endpoint --- app/controllers/mock.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/controllers/mock.php b/app/controllers/mock.php index a45bdf641..8d85b9457 100644 --- a/app/controllers/mock.php +++ b/app/controllers/mock.php @@ -244,6 +244,9 @@ App::post('/v1/mock/tests/general/upload') $file = $request->getFiles('file'); $contentRange = $request->getHeader('content-range'); + + $chunkSize = 5*1024*1024; // 5MB + if(!empty($contentRange)) { $start = $request->getContentRangeStart(); $end = $request->getContentRangeEnd(); @@ -267,21 +270,25 @@ App::post('/v1/mock/tests/general/upload') throw new Exception('All chunked request must have id header (except first)', 400, Exception::GENERAL_MOCK); } - if($end !== $size && $end-$start+1 !== 5*1024*1024) { + if($end !== $size && $end-$start+1 !== $chunkSize) { throw new Exception('Chunk size must be 5MB (except last chunk)', 400, Exception::GENERAL_MOCK); } foreach ($file['size'] as $i => $sz) { - if ($end !== $size && $sz !== 5*1024*1024) { + if ($end !== $size && $sz !== $chunkSize) { throw new Exception('Wrong chunk size', 400, Exception::GENERAL_MOCK); } - if($sz > 5*1024*1024) { + if($sz > $chunkSize) { throw new Exception('Chunk size must be 5MB or less', 400, Exception::GENERAL_MOCK); } } if($end !== $size) { - $response->json(['$id'=> 'newfileid']); + $response->json([ + '$id'=> 'newfileid', + 'chunksTotal' => $file['size'] / $chunkSize, + 'chunksUploaded' => $start / $chunkSize + ]); } } else { $file['tmp_name'] = (\is_array($file['tmp_name'])) ? $file['tmp_name'] : [$file['tmp_name']]; From 15bfd6f801b01d9da6db94200b2923cfc8cfc877 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 1 Mar 2022 21:45:37 +1300 Subject: [PATCH 18/41] Fix delete collection using wrong ID --- app/workers/deletes.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/deletes.php b/app/workers/deletes.php index e08f183ad..5e461a321 100644 --- a/app/workers/deletes.php +++ b/app/workers/deletes.php @@ -129,7 +129,7 @@ class DeletesV1 extends Worker $dbForProject = $this->getProjectDB($projectId); - $dbForProject->deleteCollection('collection_' . $collectionId); + $dbForProject->deleteCollection('collection_' . $document->getInternalId()); $this->deleteByGroup('attributes', [ new Query('collectionId', Query::TYPE_EQUAL, [$collectionId]) From fc4ada81858a73aea26209514d105b3c89cfffe3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Tue, 1 Mar 2022 08:59:48 +0000 Subject: [PATCH 19/41] Update create deployment docs --- app/views/console/functions/function.phtml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/views/console/functions/function.phtml b/app/views/console/functions/function.phtml index 566172042..3fdaa9caa 100644 --- a/app/views/console/functions/function.phtml +++ b/app/views/console/functions/function.phtml @@ -645,6 +645,7 @@ $usageStatsEnabled = $this->getParam('usageStatsEnabled', true);
    @@ -654,6 +655,7 @@ $usageStatsEnabled = $this->getParam('usageStatsEnabled', true);
    From 22ca8fc8c626104fa8c922be56fad77be5c4d164 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 1 Mar 2022 14:59:24 +0400 Subject: [PATCH 20/41] feat: add missing response models --- app/controllers/general.php | 16 +--- src/Appwrite/Utopia/Response/Filters/V12.php | 82 ++++++++++++++++++++ 2 files changed, 85 insertions(+), 13 deletions(-) diff --git a/app/controllers/general.php b/app/controllers/general.php index 01bf3bdda..d32d36232 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -129,16 +129,6 @@ App::init(function ($utopia, $request, $response, $console, $project, $dbForCons $selfDomain = new Domain($request->getHostname()); $endDomain = new Domain((string)$origin); - // var_dump('referer', $referrer); - // var_dump('origin', $origin); - // var_dump('port', $request->getPort()); - // var_dump('hostname', $request->getHostname()); - // var_dump('protocol', $request->getProtocol()); - // var_dump('method', $request->getMethod()); - // var_dump('ip', $request->getIP()); - // var_dump('-----------------'); - // var_dump($request->debug()); - Config::setParam('domainVerification', ($selfDomain->getRegisterable() === $endDomain->getRegisterable()) && $endDomain->getRegisterable() !== ''); @@ -158,12 +148,12 @@ App::init(function ($utopia, $request, $response, $console, $project, $dbForCons $responseFormat = $request->getHeader('x-appwrite-response-format', App::getEnv('_APP_SYSTEM_RESPONSE_FORMAT', '')); if ($responseFormat) { switch($responseFormat) { + case version_compare ($responseFormat , '0.11.2', '<=') : + Response::setFilter(new ResponseV11()); + break; case version_compare ($responseFormat , '0.12.4', '<='): Response::setFilter(new ResponseV12()); break; - case version_compare ($responseFormat , '0.11.0', '<=') : - Response::setFilter(new ResponseV11()); - break; default: Response::setFilter(null); } diff --git a/src/Appwrite/Utopia/Response/Filters/V12.php b/src/Appwrite/Utopia/Response/Filters/V12.php index b93878eac..1e0433338 100644 --- a/src/Appwrite/Utopia/Response/Filters/V12.php +++ b/src/Appwrite/Utopia/Response/Filters/V12.php @@ -15,24 +15,45 @@ class V12 extends Filter switch ($model) { // Update permissions + case Response::MODEL_ERROR_DEV: case Response::MODEL_ERROR: $parsedResponse = $this->parseError($content); break; + case Response::MODEL_SESSION: $parsedResponse = $this->parseSession($content); break; + case Response::MODEL_SESSION_LIST: + $parsedResponse = $this->parseSessionList($content); + break; case Response::MODEL_FILE: $parsedResponse = $this->parseFile($content); break; + case Response::MODEL_FILE_LIST: + $parsedResponse = $this->parseFileList($content); + break; case Response::MODEL_FUNCTION: $parsedResponse = $this->parseFunction($content); break; + case Response::MODEL_FUNCTION_LIST: + $parsedResponse = $this->parseFunctionList($content); + break; + + case Response::MODEL_DEPLOYMENT: + $parsedResponse = $this->parseDeployment($content); + break; + case Response::MODEL_DEPLOYMENT_LIST: + $parsedResponse = $this->parseDeploymentList($content); + break; case Response::MODEL_EXECUTION: $parsedResponse = $this->parseExecution($content); break; + case Response::MODEL_EXECUTION_LIST: + $parsedResponse = $this->parseExecutionList($content); + break; case Response::MODEL_USAGE_BUCKETS: $parsedResponse = $this->parseUsageBuckets($content); @@ -64,6 +85,17 @@ class V12 extends Filter return $content; } + protected function parseSessionList(array $content) + { + $sessions = $content['sessions']; + $parsedResponse = []; + foreach ($sessions as $document) { + $parsedResponse[] = $this->parseSession($document); + } + $content['sessions'] = $parsedResponse; + return $content; + } + protected function parseFile(array $content) { unset($content['bucketId']); @@ -73,6 +105,17 @@ class V12 extends Filter return $content; } + protected function parseFileList(array $content) + { + $files = $content['files']; + $parsedResponse = []; + foreach ($files as $document) { + $parsedResponse[] = $this->parseFile($document); + } + $content['files'] = $parsedResponse; + return $content; + } + protected function parseFunction(array $content) { $content['tag'] = $content['deployment']; @@ -80,6 +123,35 @@ class V12 extends Filter return $content; } + protected function parseFunctionList(array $content) + { + $functions = $content['functions']; + $parsedResponse = []; + foreach ($functions as $document) { + $parsedResponse[] = $this->parseFunction($document); + } + $content['functions'] = $parsedResponse; + return $content; + } + + protected function parseDeployment(array $content) + { + $content['functionId'] = $content['resourceId']; + $content['command'] = $content['entrypoint']; + return $content; + } + + protected function parseDeploymentList(array $content) + { + $deployments = $content['deployments']; + $parsedResponse = []; + foreach ($deployments as $document) { + $parsedResponse[] = $this->parseDeployment($document); + } + $content['deployments'] = $parsedResponse; + return $content; + } + protected function parseUsageBuckets(array $content) { unset($content['filesStorage']); @@ -112,4 +184,14 @@ class V12 extends Filter return $content; } + + protected function parseExecutionList($content) { + $executions = $content['executions']; + $parsedResponse = []; + foreach ($executions as $document) { + $parsedResponse[] = $this->parseExecution($document); + } + $content['executions'] = $parsedResponse; + return $content; + } } \ No newline at end of file From 6cce8a1f07b7ce62170a9bf001a66af11f5070e8 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 1 Mar 2022 15:03:45 +0400 Subject: [PATCH 21/41] feat: add missing response models --- src/Appwrite/Utopia/Response/Filters/V12.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Appwrite/Utopia/Response/Filters/V12.php b/src/Appwrite/Utopia/Response/Filters/V12.php index 1e0433338..6cd7d11e9 100644 --- a/src/Appwrite/Utopia/Response/Filters/V12.php +++ b/src/Appwrite/Utopia/Response/Filters/V12.php @@ -14,7 +14,6 @@ class V12 extends Filter $parsedResponse = $content; switch ($model) { - // Update permissions case Response::MODEL_ERROR_DEV: case Response::MODEL_ERROR: $parsedResponse = $this->parseError($content); From 24457d0c7981c3754031d2d16d98a045a78d0dc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Tue, 1 Mar 2022 11:09:34 +0000 Subject: [PATCH 22/41] Manual QA fixes --- .../specs/open-api3-latest-console.json | 2 +- app/config/specs/open-api3-latest-server.json | 2 +- app/config/specs/swagger2-latest-console.json | 2 +- app/config/specs/swagger2-latest-server.json | 2 +- composer.lock | 47 +++++++++---------- docker-compose.yml | 2 +- public/dist/scripts/app-all.js | 12 ++--- public/dist/scripts/app-dep.js | 5 +- public/dist/scripts/app.js | 7 ++- public/scripts/dependencies/appwrite.js | 14 +++--- public/scripts/views/paging/next.js | 4 +- tests/e2e/Services/Users/UsersBase.php | 4 +- 12 files changed, 51 insertions(+), 52 deletions(-) diff --git a/app/config/specs/open-api3-latest-console.json b/app/config/specs/open-api3-latest-console.json index 9c3915938..ffed4455d 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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}}}},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}}}},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"schema":{"type":"string","x-example":"amazon"},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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"},"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":68,"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,"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"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":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d"},"in":"query"}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":107,"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,"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":118,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/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":127,"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,"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\/{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":128,"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,"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"},"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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domainList"}}}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"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 Domain","operationId":"projectsCreateDomain","tags":["projects"],"description":"","responses":{"201":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","x-example":null}},"required":["domain"]}}}}}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","x-example":null,"items":{"type":"string"}}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":139,"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,"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":126,"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,"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"},"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]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"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}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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"]},"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"]},"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"]},"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"]},"domainList":{"description":"Domains List","type":"object","properties":{"total":{"type":"integer","description":"Total number of domains documents that matched your query.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":""}},"required":["total","domains"]},"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"]},"metricList":{"description":"Metric List","type":"object","properties":{"total":{"type":"integer","description":"Total number of metrics documents that matched your query.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":""}},"required":["total","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total amount of attributes in a 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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}}}},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}}}},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"schema":{"type":"string","x-example":"amazon"},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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"},"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":68,"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,"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"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":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d"},"in":"query"}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":107,"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,"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":118,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/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":127,"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,"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\/{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":128,"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,"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"},"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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domainList"}}}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"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 Domain","operationId":"projectsCreateDomain","tags":["projects"],"description":"","responses":{"201":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","x-example":null}},"required":["domain"]}}}}}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","x-example":null,"items":{"type":"string"}}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":139,"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,"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":126,"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,"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"},"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]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"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}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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"]},"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"]},"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"]},"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"]},"domainList":{"description":"Domains List","type":"object","properties":{"total":{"type":"integer","description":"Total number of domains documents that matched your query.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":""}},"required":["total","domains"]},"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"]},"metricList":{"description":"Metric List","type":"object","properties":{"total":{"type":"integer","description":"Total number of metrics documents that matched your query.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":""}},"required":["total","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"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 9a38bbd3a..11ca36be1 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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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"},"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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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"]},"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"]},"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"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total amount of attributes in a 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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"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"}}}},"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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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"},"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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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"]},"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"]},"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"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"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"}}}},"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 e6f815ba6..cda6ab337 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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","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":68,"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,"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"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":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d","in":"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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"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]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["password"]}}]}},"\/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":127,"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,"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\/{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":128,"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,"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","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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","schema":{"$ref":"#\/definitions\/domainList"}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create Domain","operationId":"projectsCreateDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null}},"required":["domain"]}}]}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","default":null,"x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","default":null,"x-example":null,"items":{"type":"string"}}},"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":139,"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,"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":126,"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,"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"},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":"","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":"","x-example":"[SECRET]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"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":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}]}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"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"]},"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"]},"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"]},"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"]},"domainList":{"description":"Domains List","type":"object","properties":{"total":{"type":"integer","description":"Total number of domains documents that matched your query.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":""}},"required":["total","domains"]},"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"]},"metricList":{"description":"Metric List","type":"object","properties":{"total":{"type":"integer","description":"Total number of metrics documents that matched your query.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":""}},"required":["total","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total amount of attributes in a 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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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","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":68,"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,"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"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":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d","in":"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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"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]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["password"]}}]}},"\/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":127,"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,"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\/{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":128,"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,"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","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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","schema":{"$ref":"#\/definitions\/domainList"}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create Domain","operationId":"projectsCreateDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null}},"required":["domain"]}}]}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","default":null,"x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","default":null,"x-example":null,"items":{"type":"string"}}},"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":139,"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,"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":126,"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,"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"},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":"","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":"","x-example":"[SECRET]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"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":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}]}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"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"]},"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"]},"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"]},"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"]},"domainList":{"description":"Domains List","type":"object","properties":{"total":{"type":"integer","description":"Total number of domains documents that matched your query.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":""}},"required":["total","domains"]},"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"]},"metricList":{"description":"Metric List","type":"object","properties":{"total":{"type":"integer","description":"Total number of metrics documents that matched your query.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":""}},"required":["total","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"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 fc01024ac..f23bce7e5 100644 --- a/app/config/specs/swagger2-latest-server.json +++ b/app/config/specs/swagger2-latest-server.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"0.12.3","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"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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","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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}]}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"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"]},"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"]},"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"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total amount of attributes in a 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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"0.12.3","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"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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","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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}]}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"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"]},"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"]},"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"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/composer.lock b/composer.lock index dcf61a078..7ef31be56 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": "318c53aaac3cdfbdb728acc5e59b8057", + "content-hash": "b7919cd5b669605d051fadd3818523a7", "packages": [ { "name": "adhocore/jwt", @@ -2129,16 +2129,16 @@ }, { "name": "utopia-php/database", - "version": "0.15.1", + "version": "0.15.2", "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "eb4f61ec40d697acdfd574638ecd075e4f44b864" + "reference": "4ae9f1162d6640ccfe28afa0bbc60b907a7ad1c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/eb4f61ec40d697acdfd574638ecd075e4f44b864", - "reference": "eb4f61ec40d697acdfd574638ecd075e4f44b864", + "url": "https://api.github.com/repos/utopia-php/database/zipball/4ae9f1162d6640ccfe28afa0bbc60b907a7ad1c0", + "reference": "4ae9f1162d6640ccfe28afa0bbc60b907a7ad1c0", "shasum": "" }, "require": { @@ -2186,9 +2186,9 @@ ], "support": { "issues": "https://github.com/utopia-php/database/issues", - "source": "https://github.com/utopia-php/database/tree/0.15.1" + "source": "https://github.com/utopia-php/database/tree/0.15.2" }, - "time": "2022-02-22T09:33:37+00:00" + "time": "2022-02-28T15:53:37+00:00" }, { "name": "utopia-php/domains", @@ -3075,7 +3075,7 @@ "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator", - "reference": "4a43aa70c2f0b243edfc689f618a85f7d0817287" + "reference": "3af54e71d0088b72b3223efc511b77e254fb7a1d" }, "require": { "ext-curl": "*", @@ -3110,7 +3110,7 @@ } ], "description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms", - "time": "2022-02-22T10:51:55+00:00" + "time": "2022-03-01T09:53:31+00:00" }, { "name": "composer/pcre", @@ -3685,9 +3685,6 @@ "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" - }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", @@ -4226,16 +4223,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.13", + "version": "9.2.14", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "deac8540cb7bd40b2b8cfa679b76202834fd04e8" + "reference": "9f4d60b6afe5546421462b76cd4e633ebc364ab4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/deac8540cb7bd40b2b8cfa679b76202834fd04e8", - "reference": "deac8540cb7bd40b2b8cfa679b76202834fd04e8", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f4d60b6afe5546421462b76cd4e633ebc364ab4", + "reference": "9f4d60b6afe5546421462b76cd4e633ebc364ab4", "shasum": "" }, "require": { @@ -4291,7 +4288,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.13" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.14" }, "funding": [ { @@ -4299,7 +4296,7 @@ "type": "github" } ], - "time": "2022-02-23T17:02:38+00:00" + "time": "2022-02-28T12:38:02+00:00" }, { "name": "phpunit/php-file-iterator", @@ -5706,16 +5703,16 @@ }, { "name": "symfony/console", - "version": "v6.0.3", + "version": "v6.0.5", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" + "reference": "3bebf4108b9e07492a2a4057d207aa5a77d146b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", + "url": "https://api.github.com/repos/symfony/console/zipball/3bebf4108b9e07492a2a4057d207aa5a77d146b1", + "reference": "3bebf4108b9e07492a2a4057d207aa5a77d146b1", "shasum": "" }, "require": { @@ -5781,7 +5778,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.0.3" + "source": "https://github.com/symfony/console/tree/v6.0.5" }, "funding": [ { @@ -5797,7 +5794,7 @@ "type": "tidelift" } ], - "time": "2022-01-26T17:23:29+00:00" + "time": "2022-02-25T10:48:52+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -6573,5 +6570,5 @@ "platform-overrides": { "php": "8.0" }, - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.2.0" } diff --git a/docker-compose.yml b/docker-compose.yml index 8e056fe8c..c2d1019a7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,7 +21,7 @@ services: - --entrypoints.appwrite_websecure.address=:443 - --accesslog=true ports: - - 80:80 + - 8080:80 - 443:443 - 9500:8080 volumes: diff --git a/public/dist/scripts/app-all.js b/public/dist/scripts/app-all.js index 0cc8fe90e..d033fda75 100644 --- a/public/dist/scripts/app-all.js +++ b/public/dist/scripts/app-all.js @@ -513,7 +513,7 @@ if(typeof fileId==='undefined'){throw new AppwriteException('Missing required pa let path='/storage/buckets/{bucketId}/files/{fileId}'.replace('{bucketId}',bucketId).replace('{fileId}',fileId);let payload={};const uri=new URL(this.config.endpoint+path);return yield this.call('delete',uri,{'content-type':'application/json',},payload);}),getFileDownload:(bucketId,fileId)=>{if(typeof bucketId==='undefined'){throw new AppwriteException('Missing required parameter: "bucketId"');} if(typeof fileId==='undefined'){throw new AppwriteException('Missing required parameter: "fileId"');} let path='/storage/buckets/{bucketId}/files/{fileId}/download'.replace('{bucketId}',bucketId).replace('{fileId}',fileId);let payload={};const uri=new URL(this.config.endpoint+path);payload['project']=this.config.project;for(const[key,value]of Object.entries(this.flatten(payload))){uri.searchParams.append(key,value);} -return uri;},getFilePreview:(bucketId,fileId,width,height,gravity,quality,borderWidth,borderColor,borderRadius,opacity,rotation,background,output)=>__awaiter(this,void 0,void 0,function*(){if(typeof bucketId==='undefined'){throw new AppwriteException('Missing required parameter: "bucketId"');} +return uri;},getFilePreview:(bucketId,fileId,width,height,gravity,quality,borderWidth,borderColor,borderRadius,opacity,rotation,background,output)=>{if(typeof bucketId==='undefined'){throw new AppwriteException('Missing required parameter: "bucketId"');} if(typeof fileId==='undefined'){throw new AppwriteException('Missing required parameter: "fileId"');} let path='/storage/buckets/{bucketId}/files/{fileId}/preview'.replace('{bucketId}',bucketId).replace('{fileId}',fileId);let payload={};if(typeof width!=='undefined'){payload['width']=width;} if(typeof height!=='undefined'){payload['height']=height;} @@ -526,7 +526,8 @@ if(typeof opacity!=='undefined'){payload['opacity']=opacity;} if(typeof rotation!=='undefined'){payload['rotation']=rotation;} if(typeof background!=='undefined'){payload['background']=background;} if(typeof output!=='undefined'){payload['output']=output;} -const uri=new URL(this.config.endpoint+path);return yield this.call('get',uri,{'content-type':'application/json',},payload);}),getFileView:(bucketId,fileId)=>{if(typeof bucketId==='undefined'){throw new AppwriteException('Missing required parameter: "bucketId"');} +const uri=new URL(this.config.endpoint+path);payload['project']=this.config.project;for(const[key,value]of Object.entries(this.flatten(payload))){uri.searchParams.append(key,value);} +return uri;},getFileView:(bucketId,fileId)=>{if(typeof bucketId==='undefined'){throw new AppwriteException('Missing required parameter: "bucketId"');} if(typeof fileId==='undefined'){throw new AppwriteException('Missing required parameter: "fileId"');} let path='/storage/buckets/{bucketId}/files/{fileId}/view'.replace('{bucketId}',bucketId).replace('{fileId}',fileId);let payload={};const uri=new URL(this.config.endpoint+path);payload['project']=this.config.project;for(const[key,value]of Object.entries(this.flatten(payload))){uri.searchParams.append(key,value);} return uri;},getUsage:(range)=>__awaiter(this,void 0,void 0,function*(){let path='/storage/usage';let payload={};if(typeof range!=='undefined'){payload['range']=range;} @@ -3541,8 +3542,7 @@ handler2.inline=(el,{expression},{cleanup:cleanup2})=>{let root=closestRoot(el); root._x_refs={};root._x_refs[expression]=el;cleanup2(()=>delete root._x_refs[expression]);};directive("ref",handler2);directive("if",(el,{expression},{effect:effect3,cleanup:cleanup2})=>{let evaluate2=evaluateLater(el,expression);let show=()=>{if(el._x_currentIfEl) return el._x_currentIfEl;let clone2=el.content.cloneNode(true).firstElementChild;addScopeToNode(clone2,{},el);mutateDom(()=>{el.after(clone2);initTree(clone2);});el._x_currentIfEl=clone2;el._x_undoIf=()=>{clone2.remove();delete el._x_currentIfEl;};return clone2;};let hide=()=>{if(!el._x_undoIf) return;el._x_undoIf();delete el._x_undoIf;};effect3(()=>evaluate2((value)=>{value?show():hide();}));cleanup2(()=>el._x_undoIf&&el._x_undoIf());});mapAttributes(startingWith("@",into(prefix("on:"))));directive("on",skipDuringClone((el,{value,modifiers,expression},{cleanup:cleanup2})=>{let evaluate2=expression?evaluateLater(el,expression):()=>{};let removeListener=on(el,value,modifiers,(e)=>{evaluate2(()=>{},{scope:{$event:e},params:[e]});});cleanup2(()=>removeListener());}));alpine_default.setEvaluator(normalEvaluator);alpine_default.setReactivityEngine({reactive:reactive2,effect:effect2,release:stop,raw:toRaw});var src_default=alpine_default;window.Alpine=src_default;queueMicrotask(()=>{src_default.start();});})();window.ls.error=function(){return function(error){window.console.error(error);if(window.location.pathname!=='/console'){window.location='/console';}};};window.addEventListener("error",function(event){console.error("ERROR-EVENT:",event.error.message,event.error.stack);});document.addEventListener("account.deleteSession",function(){window.location="/auth/signin";});document.addEventListener("account.create",function(){let container=window.ls.container;let form=container.get('serviceForm');let sdk=container.get('console');let promise=sdk.account.createSession(form.email,form.password);container.set("serviceForm",{},true,true);promise.then(function(){var subscribe=document.getElementById('newsletter').checked;if(subscribe){let alerts=container.get('alerts');let loaderId=alerts.add({text:'Loading...',class:""},0);fetch('https://appwrite.io/v1/newsletter/subscribe',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({name:form.name,email:form.email,}),}).finally(function(){alerts.remove(loaderId);window.location='/console';});}else{window.location='/console';}},function(error){window.location='/auth/signup?failure=1';});});window.addEventListener("load",async()=>{const bars=12;const realtime=window.ls.container.get('realtime');const sleep=ms=>new Promise(resolve=>setTimeout(resolve,ms));let current={};window.ls.container.get('console').subscribe(['project','console'],response=>{switch(response.event){case'stats.connections':for(let project in response.payload){current[project]=response.payload[project]??0;} -break;case'database.attributes.create':case'database.attributes.update':case'database.attributes.delete':document.dispatchEvent(new CustomEvent('database.createAttribute'));break;case'database.indexes.create':case'database.indexes.update':case'database.indexes.delete':document.dispatchEvent(new CustomEvent('database.createIndex'));break;case'functions.deployments.create':case'functions.deployments.update':case'functions.deployments.delete':document.dispatchEvent(new CustomEvent('functions.createDeployment'));break;case'functions.executions.create':case'functions.executions.update':case'functions.executions.delete':console.log("Received execution event") -document.dispatchEvent(new CustomEvent('functions.createExecution'));break;}});while(true){let newHistory={};let createdHistory=false;for(const project in current){let history=realtime?.history??{};if(!(project in history)){history[project]=new Array(bars).fill({percentage:0,value:0});} +break;case'database.attributes.create':case'database.attributes.update':case'database.attributes.delete':document.dispatchEvent(new CustomEvent('database.createAttribute'));break;case'database.indexes.create':case'database.indexes.update':case'database.indexes.delete':document.dispatchEvent(new CustomEvent('database.createIndex'));break;case'functions.deployments.create':case'functions.deployments.update':case'functions.deployments.delete':document.dispatchEvent(new CustomEvent('functions.createDeployment'));break;case'functions.executions.create':case'functions.executions.update':case'functions.executions.delete':document.dispatchEvent(new CustomEvent('functions.createExecution'));break;}});while(true){let newHistory={};let createdHistory=false;for(const project in current){let history=realtime?.history??{};if(!(project in history)){history[project]=new Array(bars).fill({percentage:0,value:0});} history=history[project];history.push({percentage:0,value:current[project]});if(history.length>=bars){history.shift();} const highest=history.reduce((prev,curr)=>{return(curr.value>prev)?curr.value:prev;},0);history=history.map(({percentage,value})=>{createdHistory=true;percentage=value===0?0:((Math.round((value/highest)*10)/10)*100);if(percentage>100)percentage=100;else if(percentage==0&&value!=0)percentage=5;return{percentage:percentage,value:value};}) newHistory[project]=history;} @@ -3716,7 +3716,7 @@ let units=["kB","MB","GB","TB","PB","EB","ZB","YB"];let u=-1;do{$value/=thresh;+ let thresh=1000;if(Math.abs($value)=thresh&&ub)return true if(a=sum){element.disabled=true;}else{element.disabled=false;element.value=offset+limit;}};check();for(let i=0;i=total){element.disabled=true;}else{element.disabled=false;element.value=offset+limit;}};check();for(let i=0;i{if(typeof bucketId==='undefined'){throw new AppwriteException('Missing required parameter: "bucketId"');} if(typeof fileId==='undefined'){throw new AppwriteException('Missing required parameter: "fileId"');} let path='/storage/buckets/{bucketId}/files/{fileId}/download'.replace('{bucketId}',bucketId).replace('{fileId}',fileId);let payload={};const uri=new URL(this.config.endpoint+path);payload['project']=this.config.project;for(const[key,value]of Object.entries(this.flatten(payload))){uri.searchParams.append(key,value);} -return uri;},getFilePreview:(bucketId,fileId,width,height,gravity,quality,borderWidth,borderColor,borderRadius,opacity,rotation,background,output)=>__awaiter(this,void 0,void 0,function*(){if(typeof bucketId==='undefined'){throw new AppwriteException('Missing required parameter: "bucketId"');} +return uri;},getFilePreview:(bucketId,fileId,width,height,gravity,quality,borderWidth,borderColor,borderRadius,opacity,rotation,background,output)=>{if(typeof bucketId==='undefined'){throw new AppwriteException('Missing required parameter: "bucketId"');} if(typeof fileId==='undefined'){throw new AppwriteException('Missing required parameter: "fileId"');} let path='/storage/buckets/{bucketId}/files/{fileId}/preview'.replace('{bucketId}',bucketId).replace('{fileId}',fileId);let payload={};if(typeof width!=='undefined'){payload['width']=width;} if(typeof height!=='undefined'){payload['height']=height;} @@ -526,7 +526,8 @@ if(typeof opacity!=='undefined'){payload['opacity']=opacity;} if(typeof rotation!=='undefined'){payload['rotation']=rotation;} if(typeof background!=='undefined'){payload['background']=background;} if(typeof output!=='undefined'){payload['output']=output;} -const uri=new URL(this.config.endpoint+path);return yield this.call('get',uri,{'content-type':'application/json',},payload);}),getFileView:(bucketId,fileId)=>{if(typeof bucketId==='undefined'){throw new AppwriteException('Missing required parameter: "bucketId"');} +const uri=new URL(this.config.endpoint+path);payload['project']=this.config.project;for(const[key,value]of Object.entries(this.flatten(payload))){uri.searchParams.append(key,value);} +return uri;},getFileView:(bucketId,fileId)=>{if(typeof bucketId==='undefined'){throw new AppwriteException('Missing required parameter: "bucketId"');} if(typeof fileId==='undefined'){throw new AppwriteException('Missing required parameter: "fileId"');} let path='/storage/buckets/{bucketId}/files/{fileId}/view'.replace('{bucketId}',bucketId).replace('{fileId}',fileId);let payload={};const uri=new URL(this.config.endpoint+path);payload['project']=this.config.project;for(const[key,value]of Object.entries(this.flatten(payload))){uri.searchParams.append(key,value);} return uri;},getUsage:(range)=>__awaiter(this,void 0,void 0,function*(){let path='/storage/usage';let payload={};if(typeof range!=='undefined'){payload['range']=range;} diff --git a/public/dist/scripts/app.js b/public/dist/scripts/app.js index 55bb7b558..dfd019cb5 100644 --- a/public/dist/scripts/app.js +++ b/public/dist/scripts/app.js @@ -494,8 +494,7 @@ handler2.inline=(el,{expression},{cleanup:cleanup2})=>{let root=closestRoot(el); root._x_refs={};root._x_refs[expression]=el;cleanup2(()=>delete root._x_refs[expression]);};directive("ref",handler2);directive("if",(el,{expression},{effect:effect3,cleanup:cleanup2})=>{let evaluate2=evaluateLater(el,expression);let show=()=>{if(el._x_currentIfEl) return el._x_currentIfEl;let clone2=el.content.cloneNode(true).firstElementChild;addScopeToNode(clone2,{},el);mutateDom(()=>{el.after(clone2);initTree(clone2);});el._x_currentIfEl=clone2;el._x_undoIf=()=>{clone2.remove();delete el._x_currentIfEl;};return clone2;};let hide=()=>{if(!el._x_undoIf) return;el._x_undoIf();delete el._x_undoIf;};effect3(()=>evaluate2((value)=>{value?show():hide();}));cleanup2(()=>el._x_undoIf&&el._x_undoIf());});mapAttributes(startingWith("@",into(prefix("on:"))));directive("on",skipDuringClone((el,{value,modifiers,expression},{cleanup:cleanup2})=>{let evaluate2=expression?evaluateLater(el,expression):()=>{};let removeListener=on(el,value,modifiers,(e)=>{evaluate2(()=>{},{scope:{$event:e},params:[e]});});cleanup2(()=>removeListener());}));alpine_default.setEvaluator(normalEvaluator);alpine_default.setReactivityEngine({reactive:reactive2,effect:effect2,release:stop,raw:toRaw});var src_default=alpine_default;window.Alpine=src_default;queueMicrotask(()=>{src_default.start();});})();window.ls.error=function(){return function(error){window.console.error(error);if(window.location.pathname!=='/console'){window.location='/console';}};};window.addEventListener("error",function(event){console.error("ERROR-EVENT:",event.error.message,event.error.stack);});document.addEventListener("account.deleteSession",function(){window.location="/auth/signin";});document.addEventListener("account.create",function(){let container=window.ls.container;let form=container.get('serviceForm');let sdk=container.get('console');let promise=sdk.account.createSession(form.email,form.password);container.set("serviceForm",{},true,true);promise.then(function(){var subscribe=document.getElementById('newsletter').checked;if(subscribe){let alerts=container.get('alerts');let loaderId=alerts.add({text:'Loading...',class:""},0);fetch('https://appwrite.io/v1/newsletter/subscribe',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({name:form.name,email:form.email,}),}).finally(function(){alerts.remove(loaderId);window.location='/console';});}else{window.location='/console';}},function(error){window.location='/auth/signup?failure=1';});});window.addEventListener("load",async()=>{const bars=12;const realtime=window.ls.container.get('realtime');const sleep=ms=>new Promise(resolve=>setTimeout(resolve,ms));let current={};window.ls.container.get('console').subscribe(['project','console'],response=>{switch(response.event){case'stats.connections':for(let project in response.payload){current[project]=response.payload[project]??0;} -break;case'database.attributes.create':case'database.attributes.update':case'database.attributes.delete':document.dispatchEvent(new CustomEvent('database.createAttribute'));break;case'database.indexes.create':case'database.indexes.update':case'database.indexes.delete':document.dispatchEvent(new CustomEvent('database.createIndex'));break;case'functions.deployments.create':case'functions.deployments.update':case'functions.deployments.delete':document.dispatchEvent(new CustomEvent('functions.createDeployment'));break;case'functions.executions.create':case'functions.executions.update':case'functions.executions.delete':console.log("Received execution event") -document.dispatchEvent(new CustomEvent('functions.createExecution'));break;}});while(true){let newHistory={};let createdHistory=false;for(const project in current){let history=realtime?.history??{};if(!(project in history)){history[project]=new Array(bars).fill({percentage:0,value:0});} +break;case'database.attributes.create':case'database.attributes.update':case'database.attributes.delete':document.dispatchEvent(new CustomEvent('database.createAttribute'));break;case'database.indexes.create':case'database.indexes.update':case'database.indexes.delete':document.dispatchEvent(new CustomEvent('database.createIndex'));break;case'functions.deployments.create':case'functions.deployments.update':case'functions.deployments.delete':document.dispatchEvent(new CustomEvent('functions.createDeployment'));break;case'functions.executions.create':case'functions.executions.update':case'functions.executions.delete':document.dispatchEvent(new CustomEvent('functions.createExecution'));break;}});while(true){let newHistory={};let createdHistory=false;for(const project in current){let history=realtime?.history??{};if(!(project in history)){history[project]=new Array(bars).fill({percentage:0,value:0});} history=history[project];history.push({percentage:0,value:current[project]});if(history.length>=bars){history.shift();} const highest=history.reduce((prev,curr)=>{return(curr.value>prev)?curr.value:prev;},0);history=history.map(({percentage,value})=>{createdHistory=true;percentage=value===0?0:((Math.round((value/highest)*10)/10)*100);if(percentage>100)percentage=100;else if(percentage==0&&value!=0)percentage=5;return{percentage:percentage,value:value};}) newHistory[project]=history;} @@ -669,7 +668,7 @@ let units=["kB","MB","GB","TB","PB","EB","ZB","YB"];let u=-1;do{$value/=thresh;+ let thresh=1000;if(Math.abs($value)=thresh&&ub)return true if(a=sum){element.disabled=true;}else{element.disabled=false;element.value=offset+limit;}};check();for(let i=0;i=total){element.disabled=true;}else{element.disabled=false;element.value=offset+limit;}};check();for(let i=0;i __awaiter(this, void 0, void 0, function* () { + getFilePreview: (bucketId, fileId, width, height, gravity, quality, borderWidth, borderColor, borderRadius, opacity, rotation, background, output) => { if (typeof bucketId === 'undefined') { throw new AppwriteException('Missing required parameter: "bucketId"'); } @@ -4517,10 +4517,12 @@ payload['output'] = output; } const uri = new URL(this.config.endpoint + path); - return yield this.call('get', uri, { - 'content-type': 'application/json', - }, payload); - }), + payload['project'] = this.config.project; + for (const [key, value] of Object.entries(this.flatten(payload))) { + uri.searchParams.append(key, value); + } + return uri; + }, /** * Get File for View * diff --git a/public/scripts/views/paging/next.js b/public/scripts/views/paging/next.js index b7e3fc932..1b9bd4587 100644 --- a/public/scripts/views/paging/next.js +++ b/public/scripts/views/paging/next.js @@ -12,11 +12,11 @@ paths = paths.concat(expression.getPaths()); - let sum = parseInt(expression.parse(element.dataset["sum"]) || "0"); + let total = parseInt(expression.parse(element.dataset["total"]) || "0"); paths = paths.concat(expression.getPaths()); - if (offset + limit >= sum) { + if (offset + limit >= total) { element.disabled = true; } else { element.disabled = false; diff --git a/tests/e2e/Services/Users/UsersBase.php b/tests/e2e/Services/Users/UsersBase.php index 923abd6ce..060cb3285 100644 --- a/tests/e2e/Services/Users/UsersBase.php +++ b/tests/e2e/Services/Users/UsersBase.php @@ -155,8 +155,8 @@ trait UsersBase $this->assertEquals($response['headers']['status-code'], 200); $this->assertIsArray($response['body']); $this->assertIsArray($response['body']['users']); - $this->assertIsInt($response['body']['sum']); - $this->assertEquals(1, $response['body']['sum']); + $this->assertIsInt($response['body']['total']); + $this->assertEquals(1, $response['body']['total']); $this->assertCount(1, $response['body']['users']); $response = $this->client->call(Client::METHOD_GET, '/users', array_merge([ From ed9335afdf4fbb5e2eb31de17709130bcdecbfd4 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 1 Mar 2022 15:12:18 +0400 Subject: [PATCH 23/41] feat: add missing response models --- src/Appwrite/Utopia/Response/Filters/V12.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Appwrite/Utopia/Response/Filters/V12.php b/src/Appwrite/Utopia/Response/Filters/V12.php index 6cd7d11e9..a2f3d130d 100644 --- a/src/Appwrite/Utopia/Response/Filters/V12.php +++ b/src/Appwrite/Utopia/Response/Filters/V12.php @@ -118,7 +118,7 @@ class V12 extends Filter protected function parseFunction(array $content) { $content['tag'] = $content['deployment']; - + unset($content['deployment']); return $content; } @@ -180,6 +180,7 @@ class V12 extends Filter protected function parseExecution($content) { $content['exitCode'] = $content['statusCode']; + unset($content['statusCode']); return $content; } From 09c8f15dd473efac5db99cbc4189c7ed10d79cd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Tue, 1 Mar 2022 11:33:41 +0000 Subject: [PATCH 24/41] Remove Gitpod changes --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index c2d1019a7..8e056fe8c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,7 +21,7 @@ services: - --entrypoints.appwrite_websecure.address=:443 - --accesslog=true ports: - - 8080:80 + - 80:80 - 443:443 - 9500:8080 volumes: From a8f316110dc4458af59e096be44daaec4a972cc6 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 1 Mar 2022 11:37:51 +0000 Subject: [PATCH 25/41] default previews fix when files set on external storage --- app/controllers/api/storage.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 326578ee9..1e5560318 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -864,7 +864,8 @@ App::get('/v1/storage/buckets/:bucketId/files/:fileId/preview') ->inject('usage') ->inject('mode') ->inject('deviceFiles') - ->action(function ($bucketId, $fileId, $width, $height, $gravity, $quality, $borderWidth, $borderColor, $borderRadius, $opacity, $rotation, $background, $output, $request, $response, $project, $dbForProject, $usage, $mode, $deviceFiles) { + ->inject('deviceLocal') + ->action(function ($bucketId, $fileId, $width, $height, $gravity, $quality, $borderWidth, $borderColor, $borderRadius, $opacity, $rotation, $background, $output, $request, $response, $project, $dbForProject, $usage, $mode, $deviceFiles, $deviceLocal) { /** @var Utopia\Swoole\Request $request */ /** @var Appwrite\Utopia\Response $response */ /** @var Utopia\Database\Document $project */ @@ -935,6 +936,7 @@ App::get('/v1/storage/buckets/:bucketId/files/:fileId/preview') $background = (empty($background)) ? 'eceff1' : $background; $type = \strtolower(\pathinfo($path, PATHINFO_EXTENSION)); $key = \md5($path . $width . $height . $gravity . $quality . $borderWidth . $borderColor . $borderRadius . $opacity . $rotation . $background . $output); + $deviceFiles = $deviceLocal; } From 2c34480d1b45a2acf8a79ccbf91659ae459b62f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Tue, 1 Mar 2022 11:59:50 +0000 Subject: [PATCH 26/41] Fix executor env vars --- app/controllers/api/storage.php | 1 + docker-compose.yml | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 1e5560318..ccaa41e8c 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -872,6 +872,7 @@ App::get('/v1/storage/buckets/:bucketId/files/:fileId/preview') /** @var Utopia\Database\Database $dbForProject */ /** @var Appwrite\Stats\Stats $usage */ /** @var Utopia\Storage\Device $deviceFiles */ + /** @var Utopia\Storage\Device $deviceLocal */ /** @var string $mode */ if (!\extension_loaded('imagick')) { diff --git a/docker-compose.yml b/docker-compose.yml index 8e056fe8c..8844c4fe5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -416,6 +416,8 @@ services: - 9519:80 volumes: - /var/run/docker.sock:/var/run/docker.sock + - ./app:/usr/src/code/app + - ./src:/usr/src/code/src - appwrite-functions:/storage/functions:rw - appwrite-builds:/storage/builds:rw - /tmp:/tmp:rw @@ -433,6 +435,15 @@ services: - _APP_EXECUTOR_RUNTIME_NETWORK - _APP_LOGGING_PROVIDER - _APP_LOGGING_CONFIG + - _APP_STORAGE_DEVICE + - _APP_STORAGE_S3_ACCESS_KEY + - _APP_STORAGE_S3_SECRET + - _APP_STORAGE_S3_REGION + - _APP_STORAGE_S3_BUCKET + - _APP_STORAGE_DO_SPACES_ACCESS_KEY + - _APP_STORAGE_DO_SPACES_SECRET + - _APP_STORAGE_DO_SPACES_REGION + - _APP_STORAGE_DO_SPACES_BUCKET - DOCKERHUB_PULL_USERNAME - DOCKERHUB_PULL_PASSWORD From b9dbe3a7135dae098b22c5ec5f516266b4a632d4 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 1 Mar 2022 16:00:15 +0400 Subject: [PATCH 27/41] feat: add missing response models for sum->lists --- src/Appwrite/Utopia/Response/Filters/V12.php | 65 ++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/src/Appwrite/Utopia/Response/Filters/V12.php b/src/Appwrite/Utopia/Response/Filters/V12.php index a2f3d130d..210add92d 100644 --- a/src/Appwrite/Utopia/Response/Filters/V12.php +++ b/src/Appwrite/Utopia/Response/Filters/V12.php @@ -61,6 +61,37 @@ class V12 extends Filter case Response::MODEL_USAGE_STORAGE: $parsedResponse = $this->parseUsageStorage($content); break; + + case Response::MODEL_TEAM: + $parsedResponse = $this->parseTeam($content); + break; + case Response::MODEL_TEAM_LIST: + $parsedResponse = $this->parseTeamList($content); + break; + + case Response::MODEL_DOCUMENT_LIST: + case Response::MODEL_COLLECTION_LIST: + case Response::MODEL_INDEX_LIST: + case Response::MODEL_USER_LIST: + case Response::MODEL_LOG_LIST: + case Response::MODEL_BUCKET_LIST: + case Response::MODEL_MEMBERSHIP_LIST: + case Response::MODEL_RUNTIME_LIST: + case Response::MODEL_BUILD_LIST: + case Response::MODEL_PROJECT_LIST: + case Response::MODEL_WEBHOOK_LIST: + case Response::MODEL_KEY_LIST: + case Response::MODEL_PLATFORM_LIST: + case Response::MODEL_DOMAIN_LIST: + case Response::MODEL_COUNTRY_LIST: + case Response::MODEL_CONTINENT_LIST: + case Response::MODEL_LANGUAGE_LIST: + case Response::MODEL_CURRENCY_LIST: + case Response::MODEL_PHONE_LIST: + case Response::MODEL_METRIC_LIST: + case Response::MODEL_ATTRIBUTE_LIST: + $parsedResponse = $this->parseList($content); + break; } return $parsedResponse; @@ -92,6 +123,8 @@ class V12 extends Filter $parsedResponse[] = $this->parseSession($document); } $content['sessions'] = $parsedResponse; + $content['sum'] = $content['total']; + unset($content['total']); return $content; } @@ -112,6 +145,8 @@ class V12 extends Filter $parsedResponse[] = $this->parseFile($document); } $content['files'] = $parsedResponse; + $content['sum'] = $content['total']; + unset($content['total']); return $content; } @@ -130,6 +165,8 @@ class V12 extends Filter $parsedResponse[] = $this->parseFunction($document); } $content['functions'] = $parsedResponse; + $content['sum'] = $content['total']; + unset($content['total']); return $content; } @@ -148,6 +185,8 @@ class V12 extends Filter $parsedResponse[] = $this->parseDeployment($document); } $content['deployments'] = $parsedResponse; + $content['sum'] = $content['total']; + unset($content['total']); return $content; } @@ -192,6 +231,32 @@ class V12 extends Filter $parsedResponse[] = $this->parseExecution($document); } $content['executions'] = $parsedResponse; + $content['sum'] = $content['total']; + unset($content['total']); + return $content; + } + + protected function parseTeam($content) { + $content['sum'] = $content['total']; + unset($content['total']); + return $content; + } + + protected function parseTeamList($content) { + $teams = $content['teams']; + $parsedResponse = []; + foreach ($teams as $document) { + $parsedResponse[] = $this->parseTeam($document); + } + $content['teams'] = $parsedResponse; + $content['sum'] = $content['total']; + unset($content['total']); + return $content; + } + + protected function parseList($content) { + $content['sum'] = $content['total']; + unset($content['total']); return $content; } } \ No newline at end of file From 5ad3c15d012dd3267ff330c5580061e81c4560f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Tue, 1 Mar 2022 12:42:37 +0000 Subject: [PATCH 28/41] Update version --- app/config/platforms.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/config/platforms.php b/app/config/platforms.php index 5c067eae8..6ca8dc15a 100644 --- a/app/config/platforms.php +++ b/app/config/platforms.php @@ -180,7 +180,7 @@ return [ [ 'key' => 'cli', 'name' => 'Command Line', - 'version' => '0.14.0', + 'version' => '0.15.0', 'url' => 'https://github.com/appwrite/sdk-for-cli', 'package' => 'https://www.npmjs.com/package/appwrite-cli', 'enabled' => true, From 8406b973f5bc3bc6115c0d4e28d1ddae9536a2c3 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 1 Mar 2022 16:52:38 +0400 Subject: [PATCH 29/41] feat: update order of request filters --- app/controllers/general.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/general.php b/app/controllers/general.php index 45c45e80e..b77857c04 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -46,12 +46,12 @@ App::init(function ($utopia, $request, $response, $console, $project, $dbForCons $requestFormat = $request->getHeader('x-appwrite-response-format', App::getEnv('_APP_SYSTEM_RESPONSE_FORMAT', '')); if ($requestFormat) { switch($requestFormat) { - case version_compare ($requestFormat , '0.13.0', '<') : - Request::setFilter(new RequestV13()); - break; case version_compare ($requestFormat , '0.12.0', '<') : Request::setFilter(new RequestV12()); break; + case version_compare ($requestFormat , '0.13.0', '<') : + Request::setFilter(new RequestV13()); + break; default: Request::setFilter(null); } From 1490b7353c6f4c572b49221323ae0dd77708f747 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 1 Mar 2022 18:19:47 +0400 Subject: [PATCH 30/41] feat: print correct error messages --- app/controllers/api/functions.php | 1 + app/controllers/general.php | 33 +++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index a8bf79353..d2b273aa4 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -999,6 +999,7 @@ App::get('/v1/functions/:functionId/executions') $function = Authorization::skip(fn() => $dbForProject->getDocument('functions', $functionId)); + throw new Exception('Function not found', 404, Exception::FUNCTION_NOT_FOUND); if ($function->isEmpty()) { throw new Exception('Function not found', 404, Exception::FUNCTION_NOT_FOUND); } diff --git a/app/controllers/general.php b/app/controllers/general.php index 9450a5fd5..1046bb446 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -376,7 +376,20 @@ App::error(function ($error, $utopia, $request, $response, $layout, $project, $l throw $error; } - + if (php_sapi_name() === 'cli') { + Console::error('[Error] Timestamp: '.date('c', time())); + + if($route) { + Console::error('[Error] Method: '.$route->getMethod()); + Console::error('[Error] URL: '.$route->getPath()); + } + + Console::error('[Error] Type: '.get_class($error)); + Console::error('[Error] Message: '.$error->getMessage()); + Console::error('[Error] File: '.$error->getFile()); + Console::error('[Error] Line: '.$error->getLine()); + } + /** Handle Utopia Errors */ if ($error instanceof Utopia\Exception) { $code = $error->getCode(); @@ -396,22 +409,6 @@ App::error(function ($error, $utopia, $request, $response, $layout, $project, $l $error = new Exception($error->getMessage(), $error->getCode(), Exception::GENERAL_UNKNOWN, $error); } - $template = ($route) ? $route->getLabel('error', null) : null; - - if (php_sapi_name() === 'cli') { - Console::error('[Error] Timestamp: '.date('c', time())); - - if($route) { - Console::error('[Error] Method: '.$route->getMethod()); - Console::error('[Error] URL: '.$route->getPath()); - } - - Console::error('[Error] Type: '.get_class($error)); - Console::error('[Error] Message: '.$error->getMessage()); - Console::error('[Error] File: '.$error->getFile()); - Console::error('[Error] Line: '.$error->getLine()); - } - switch ($error->getCode()) { // Don't show 500 errors! case 400: // Error allowed publicly case 401: // Error allowed publicly @@ -456,6 +453,8 @@ App::error(function ($error, $utopia, $request, $response, $layout, $project, $l ->setStatusCode($code) ; + $template = ($route) ? $route->getLabel('error', null) : null; + if ($template) { $comp = new View($template); From 0d2c8d8b3950e75e1c565e959e24a4c138f41fb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Tue, 1 Mar 2022 15:09:21 +0000 Subject: [PATCH 31/41] Fix activate pram --- app/controllers/api/functions.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index d2b273aa4..83bc64d3e 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -558,10 +558,9 @@ App::post('/v1/functions/:functionId/deployments') throw new Exception('Failed moving file', 500, Exception::GENERAL_SERVER_ERROR); } + $activate = (bool) filter_var($activate, FILTER_VALIDATE_BOOLEAN); + if($chunksUploaded === $chunks) { - - $activate = (bool) filter_var($activate, FILTER_VALIDATE_BOOLEAN); - if ($activate) { // Remove deploy for all other deployments. $activeDeployments = $dbForProject->find('deployments', [ From 5958bdd2dcb950b11e9fb55902304e85729b7d89 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 1 Mar 2022 20:16:42 +0400 Subject: [PATCH 32/41] feat: print correct error messages --- app/controllers/general.php | 39 +++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/app/controllers/general.php b/app/controllers/general.php index 590b3c6a2..d68f12c84 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -374,6 +374,12 @@ App::error(function ($error, $utopia, $request, $response, $layout, $project, $l throw $error; } + $code = $error->getCode(); + $message = $error->getMessage(); + $file = $error->getFile(); + $line = $error->getLine(); + $trace = $error->getTrace(); + if (php_sapi_name() === 'cli') { Console::error('[Error] Timestamp: '.date('c', time())); @@ -383,15 +389,14 @@ App::error(function ($error, $utopia, $request, $response, $layout, $project, $l } Console::error('[Error] Type: '.get_class($error)); - Console::error('[Error] Message: '.$error->getMessage()); - Console::error('[Error] File: '.$error->getFile()); - Console::error('[Error] Line: '.$error->getLine()); + Console::error('[Error] Message: '.$message); + Console::error('[Error] File: '.$file); + Console::error('[Error] Line: '.$line); } /** Handle Utopia Errors */ if ($error instanceof Utopia\Exception) { - $code = $error->getCode(); - $error = new Exception($error->getMessage(), $code, Exception::GENERAL_UNKNOWN, $error); + $error = new Exception($message, $code, Exception::GENERAL_UNKNOWN, $error); switch($code) { case 400: $error->setType(Exception::GENERAL_ARGUMENT_INVALID); @@ -404,10 +409,10 @@ App::error(function ($error, $utopia, $request, $response, $layout, $project, $l /** Wrap all exceptions inside Appwrite\Extend\Exception */ if (!($error instanceof Exception)) { - $error = new Exception($error->getMessage(), $error->getCode(), Exception::GENERAL_UNKNOWN, $error); + $error = new Exception($message, $code, Exception::GENERAL_UNKNOWN, $error); } - switch ($error->getCode()) { // Don't show 500 errors! + switch ($code) { // Don't show 500 errors! case 400: // Error allowed publicly case 401: // Error allowed publicly case 402: // Error allowed publicly @@ -419,8 +424,6 @@ App::error(function ($error, $utopia, $request, $response, $layout, $project, $l case 429: // Error allowed publicly case 501: // Error allowed publicly case 503: // Error allowed publicly - $code = $error->getCode(); - $message = $error->getMessage(); break; default: $code = 500; // All other errors get the generic 500 server error status code @@ -429,19 +432,21 @@ App::error(function ($error, $utopia, $request, $response, $layout, $project, $l //$_SERVER = []; // Reset before reporting to error log to avoid keys being compromised + $type = $error->getType(); + $output = ((App::isDevelopment())) ? [ - 'message' => $error->getMessage(), - 'code' => $error->getCode(), - 'file' => $error->getFile(), - 'line' => $error->getLine(), - 'trace' => $error->getTrace(), + 'message' => $message, + 'code' => $code, + 'file' => $file, + 'line' => $line, + 'trace' => $trace, 'version' => $version, - 'type' => $error->getType(), + 'type' => $type, ] : [ 'message' => $message, 'code' => $code, 'version' => $version, - 'type' => $error->getType(), + 'type' => $type, ]; $response @@ -462,7 +467,7 @@ App::error(function ($error, $utopia, $request, $response, $layout, $project, $l ->setParam('projectURL', $project->getAttribute('url')) ->setParam('message', $error->getMessage()) ->setParam('code', $code) - ->setParam('trace', $error->getTrace()) + ->setParam('trace', $trace) ; $layout From 4d015cb6f5fc04b48e6c7c92ef38d22a4308f40e Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 1 Mar 2022 21:19:51 +0400 Subject: [PATCH 33/41] feat: fix throw --- app/controllers/api/functions.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index d2b273aa4..a8bf79353 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -999,7 +999,6 @@ App::get('/v1/functions/:functionId/executions') $function = Authorization::skip(fn() => $dbForProject->getDocument('functions', $functionId)); - throw new Exception('Function not found', 404, Exception::FUNCTION_NOT_FOUND); if ($function->isEmpty()) { throw new Exception('Function not found', 404, Exception::FUNCTION_NOT_FOUND); } From 5e16046ba6e3d090b7ee5ba8948117e49cf6209b Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Tue, 1 Mar 2022 18:45:05 +0100 Subject: [PATCH 34/41] chore: update changelog --- CHANGES.md | 66 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 53 insertions(+), 13 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index cd7a5c6c1..b191fac06 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,17 +1,57 @@ -# Unreleased Version 0.13.0 +# Version 0.13.0 + +## Features +### Functions +- Synchronous function execution +- Improved functions execution times by alot +- Added a new worker to build deployments +- Functions are now executed differently and your functions need to be adapted **Breaking Change** +- Tags are now called Deployments **Breaking Change** +- Renamed `tagId` to `deplyomentId` in collections **Breaking Change** +- Updated event names from `function.tags.*` to `function.deployments.*` **Breaking Change** +### Storage +- Added Buckets +- Buckets allow you to configure following settings: + - Maximum File Size + - Enabled/Disabled + - Encryption + - Anti Virus + - Allowed file extensions + - Permissions + - Bucket Level + - File Level +- Support for S3 and Digitalocean Spaces +- Support for large files +- Files larger then 5MB will be automatically uploaded in chunks +- New UI in the console for uploading files with progress indication + +### Account +- Renamed `providerToken` to `providerAccessToken` in sessions **Breaking Change** +- New endpoint to refresh the OAuth Access Token +- OAuth sessions now include `providerAccessTokenExpiry` and `providerRefreshToken` + +## Bugs +- Fixed permission issues and is now more consistent and returns all resources +- Fixed total amount of documents not being updated +- Fixed issue with searching though memberships +- Fixed image preview rotation +- Fixed Database index names that contain SQL keywords +- Fixed UI to reveal long e-mail addresses on User list +- Fixed UI for Attribute default value field to reset after submit +- Fixed UI to check for new available version of Appwrite +- Fixed UI default values when creating Integer or Float attributes + + +## Security +- Remove `appwrite.io` and `appwrite.test` from authorized domains for session verification + +## Upgrades + +- Upgraded `redis` extenstion to version 5.3.6 +- Upgraded `swoole` extenstion to version 4.8.6 +- Upgraded `imagick` extenstion to version 3.7.0 +- Upgraded GEO IP database to version February 2022 -- Added ability to create syncronous function executions -- Introduced new execution model for functions -- Improved functions execution times -- Improved functions execution times -- Create a new builds worker to handle building of deployments -- **[ Breaking ]** **Tags** have been renamed to **Deployments** - - Rename `tagId` to `deplyomentId` in collections - - Rename tags to deployments in the docs - - Updated endpoints to reflect the new terminology - - Updated UI with these changes - - Updated event names from `function.tags.*` to `function.deployments.*` - # Version 0.12.3 ## Bugs From 2cf9364498d6c029631df8f71b339bdccd10dbd3 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 1 Mar 2022 21:53:28 +0400 Subject: [PATCH 35/41] feat: fix throw --- app/controllers/api/functions.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index d2b273aa4..a8bf79353 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -999,7 +999,6 @@ App::get('/v1/functions/:functionId/executions') $function = Authorization::skip(fn() => $dbForProject->getDocument('functions', $functionId)); - throw new Exception('Function not found', 404, Exception::FUNCTION_NOT_FOUND); if ($function->isEmpty()) { throw new Exception('Function not found', 404, Exception::FUNCTION_NOT_FOUND); } From 2607f6b9c5522ff66b46de4f2cbd4907e0d77878 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Tue, 1 Mar 2022 18:55:36 +0100 Subject: [PATCH 36/41] chore: update dependencies --- Dockerfile | 4 +- app/db/DBIP/dbip-country-lite-2021-12.mmdb | Bin 6770707 -> 0 bytes app/db/DBIP/dbip-country-lite-2022-03.mmdb | Bin 0 -> 7209381 bytes app/init.php | 2 +- composer.json | 8 +-- composer.lock | 69 +++++++++++---------- package-lock.json | 28 ++++----- package.json | 4 +- public/dist/scripts/app-all.js | 8 ++- public/dist/scripts/app-dep.js | 8 ++- 10 files changed, 69 insertions(+), 62 deletions(-) delete mode 100644 app/db/DBIP/dbip-country-lite-2021-12.mmdb create mode 100644 app/db/DBIP/dbip-country-lite-2022-03.mmdb diff --git a/Dockerfile b/Dockerfile index 9ed2d0810..023e88a20 100755 --- a/Dockerfile +++ b/Dockerfile @@ -29,9 +29,9 @@ FROM php:8.0.14-cli-alpine3.15 as compile ARG DEBUG=false ENV DEBUG=$DEBUG -ENV PHP_REDIS_VERSION=5.3.5 \ +ENV PHP_REDIS_VERSION=5.3.7 \ PHP_MONGODB_VERSION=1.9.1 \ - PHP_SWOOLE_VERSION=v4.8.5 \ + PHP_SWOOLE_VERSION=v4.8.7 \ PHP_IMAGICK_VERSION=3.7.0 \ PHP_YAML_VERSION=2.2.2 \ PHP_MAXMINDDB_VERSION=v1.11.0 diff --git a/app/db/DBIP/dbip-country-lite-2021-12.mmdb b/app/db/DBIP/dbip-country-lite-2021-12.mmdb deleted file mode 100644 index 5dcb5ed777fec810b398f7fdb0880438ee3eed89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6770707 zcmY(M1r!{`vWCAMS>K(R6(He;U;zTbAwWnV1d?D08ZHvt-7fC#?(XjHa&dQemxsH< ztG{M9aL?KEpPK6G>gww5>YkpSStw*v{{}%eO$Wl#BWFRBO%p-vSad8omP?Op3>BxV zjy1=+W5coOm^h}6nPbbb?bvbbI!@&{wc|970~`lBPV4wD$3c$MISzK5-f;%U869VG zoY`@R<1CJ|I?m=e)NyvlIUI*M&gnRpA05TWXH7~*Ku6eaXrWN!!K@u4T9naupwK_1{*Q= z+psZ%$HFF*K8H;yJn6!l!R8chf-S&gwuGx;D>w(Xh7({LI1ILhePKJ;6}Ha?YyvxE z15IGZY~Y9RAE$S6dgpA~4PY0ejd0FxF2B3W?BSd}9rtqF+i@R5{gih<=j`vf4siNF z$AcUXc09z;i9QjKLgKYGtL6fN`r{!4VBjsUi6GF!OLRK^qXJ4DnHoe z%(*jPhd1PwUhjG)~ArXTy6G{sr$VRmRv@_>h7{)Q{i~_!z!%lRkk@ z;Y+9g&+#+(9KJAGX1nFi|H|>}oDbi^FYq1w0N;z5%d46{!cRE|e(u-(*M3He?Z5v+ z_)iKI_=`eB0pn9BI0ll@W%#!Zh1fYo3MD7XlF5Brs8UFrS)))FUwIo8np0$)lR9RO zEedU={;j0z{HYwLcASR700~IjK*wqOB@Uvn7KQ03EI?tfCrwXbP6{(nn3cke&Y8*3 zLb#T?+FmNyL1P^Y`spkis|$!=1Sh zh0#td?6?Sp5fnx_y{O~Jey+v*a&f~xX9>~LKZe4ReR?V9jMb&8GoHdq6qcqik-{?0 zSytJVw4CGejuXU`sudhp%(FYaGKEPLRuM-6tL8}*R`ZPic3hpp8h!qnxhm&Rrm(Z; zTARW;6t<B}j8$n?Q#~mI2Lt!VS_A>55;UEgTdeUwbEYzE--6`ym%TTZ>K%Q~_-W2ws zupfner)cnu`#T=scwnAH;b00UQLxgFrf?{QBPkr_N)FEzQaGY7c~nk#_G2iVK*8d_ znPKtY(Bl6T15W&h(SxCN zKP&oX3J+^GDcqvCUAUFPZ4@4)aC=|=4hnZt_^->{<#;!Rd$L*fb^2aKS~c!{d5ooS zzw;k3v_dI7Bt7=C*|zYA8}O(CzKVW~!sAXnApwiYy!^^zd_+yqD@@Y za}=J>X8jk17YJ>HzDRH_g_j7{r|>etTohg*C{uWq!q*f`)khRwr(i+el)O#hO$u+x z53~L&n{D1~=rkgRTD-FO{{e;fD7>#q8Gq;v60_xW;X}#Hz9xl_DSScU6AGVE_>_Vx znd85j3WrU0lRnSv(sfe!lEPP_O^Nh>L*X|H-%|LA!gmyYaOU^9B@}+lJ?Tn*rtm9; zU!>N4e_QxFK}g{b0x0}R;V)S=?7NB0+^< zT7oJ;o1jLJ5Y!2p1dVL2xuj>V2Sv>BUxL)`D*C0gWT)wwdrg84!PEp@f~iz%(`f~4#5%xOS-@q89&!t1WOT& z?b$Q`JjNs#Pp~S%(gYI;mLXWqnakz|5G+qHL9|uD7B(tt1%j0cRwP(SIxWdfC0IpG zv%s!qHo+tUYm3zgTws{hcXfg_a><@6B(|1yV5%sJoZ+RPNpO~0Ht%e< zjt$Q77CAQ?{&~(MIG^Amf(vrP2rlgV=VEc>s7rdLs>@yG247BKRlAztN`kAhg-*{F zo+VrOX(^PSia0kK71h=R<%5tmKh2S=V+oi-B z-RiZ-eFS$B+)Z$oD%)$ddkFqZaIYLE*!X9=G2RI7!V`iz7}EN@8g9KrK>uyt>|;P|3Un&CeLFB5!9 z@Cw1Jxk&`C5xhh2I>Fm+-WvpO61=4$khi$-hHS+91n&}jMDQNL2L$gc)oRg;q8|Uv zISOtc6MUjZv`e+18T_R??K1+a;1{waZ(r5rD}rwcz9#sl7e*{;(LD&hBlv;9gTLvK z^R6Z|2QEQ?(ICxNB_Lfh{N2@8b%_;027d?c|j zCbZ2TkHBF`UJc8HHNuMQlt4AFrY^0G!Umz~Y!W7U6jGyvDPcx9fUre46=9pOYc(S5 zs9xqP`%$g5!&wQ35za<9JK@m0W2+UyIb>?y&qGZCgmbC+jAt@zK;lj#p(J~xC_z~fvgohH2BwUAZ6yeH*ixG|^T%2%8!qJ3F zWFs$9yQr)&(kyQ*MQEEp9jP_jY(#|P3702ansAw(Z)M4{gv+To>p7!VAe=zB65&Kw zWtS@|uvn7)ye_7ka1}+ca8<&|gp&x@P*(|8BQzJSu6fD^l-VF-)>P3V*2+0<*xD*i zde$Y}nQ%SAEeY2r+>CGo!j07-!wm^H>Umg_o2V8R*uzalsJP7ux6n8;{Z?Y$jl-=7 zwPv?a-bZ*i;l+eU z5S~kTB;jdsVn+R`~d|p;g zNb)wqI|y%=+fB)+KU7oI{VtOvyqnOhy+@6!L4B_X6LVh?-cR@(;RA$^5uZxgB`^t3Q~|5z7;POZXk( z_X;(}F=09IN5WqSeE-N}8 zZc#*3C5nm4L`9;K%CgkOXH~g2gd?8*^Si~s9@7*KBASC}I-(&&gNbG&nx1F|wXDmy zF*6Z){I?2va3Gq6XeiOFM6=0&#jh9NdSf)ZN-;4T(a|uXd5PvEn%gWPa#z?*cQlVQ zo0w`bACX7?DKRHnkZ5_L;Y5oO`9u&ctdSTkLNwC#j38Q6RkNSznazqAB^y-4;zVPe z7)`VU(U_i${I(>~Qo1xr**Q+*F&a;_9MRH5%MvZqtFm=At9!l*vNn0t2?eC11#c=9!s>A0*=MiXlk_Re8LOAIlv-^AFJ(ibjWk}&F#B1O35*`=ZrPM*GosBkxE8;jXbboJmc%m< zZAJ7XkvaSXqHT!wC)$>1ccSfxb|KoH=s(%$hlqCYqIZ;j8)DH;HtT5;k9Jl&iZCba zW*f7bBJ(?`Xb+;jiS{JgOUxw>R*$k7FxrP`KO)VW;twAq4bpi4(UC+45*>`iB2Xum*^Ct)7?v_5}hW;`s`112GQ9>XA+&IfcCeBbFwj^^p6RN&Lg^n=zO9J zjYH(O04n7oB47O528*?V<;^Gb=rSVn|K&tiTTdXmg6K*j5B?_Ot{}R`?Yx%gI+dF* zMQk#PZjc@~gXkur`-pBPx`XHzqFZH;I`D0}j}URY%9TlX65Zov-Q|~eOS0F!?@)Qq>DW{bM$4Wjpm-Xwb0 z+vqK#w~5}7XUszT8Q}{jqW6hD(D*W@TIT|ykBGh^`k2VZ$R|XfW=rm(y4z1}^cm6T z5?0*!LZ!>FFIBWszb5*Q=o_MMv!xV;q*-42p6CY^YLis-qxZd^h<@&M<6bNLN}Lk? zMqDKNo#-#3KZyS9Ro}X_joBFDNG%l?hy&tKZnPxRY^BGsinDsz(2GmN4dODfM}DPN zt;vXM#C7GeslkSW#hJKCoG9kxPOvc*XT;MGw}`vMZQ_n>unO95)E~rC5l^i`t)Z9t zJR5r`@c`m!i3iF>CTX!EHVX%7|I^gk?Or?`@nGWVd%eh zR!8Fbi5JMm4bwbg^|el`3Jxb;h|C9AJK{BnHzu~GG*_=hygu<{ z;&q7ER+a5%@iShRc)e`=O)57>#$6nDb==Ky zcgH;(_jKILP|EG6zGuq!Qz>SN`9uypfcRkI1BnlkTkHv-Nvaly5Fbu_sK#1+n0DZe zZ>Y;7q*E<^6!8tjM-!h*d<^kv#K#h!M0_0a3B<>%Ae)m7V#OxXG*_yes4SCvsJXZ!8wXi%dAa&9`U8b=M$U#7Z6{VFYTmC zViyx%(rb6qFMnP}d^Pdq#8(kt;Z?X&5#D~b6gRg^<{DzHl!&h-zD^T|bxT8&5%Wgk z$BAzuzMuGJ;@gOCA-+{{BX3q!$6D4G{P7)TF!7z)va309H?gJOLwv6)qMiJ$-3H(P zF^>Ac1H_LIKS=zLEFXKQhoFbEW&d&wj}mJx&_J`F;@A_!FA+aU{0#9^#7~=%*0tnG z#ja%O~O#B-0E5xs=6};oQ=GSGU$*9(E62C|M7V+DP zBukmXcZlEBcDL=BEVH(W5x-CTfyy<*Oo@8MN5o$ee@y%Z@h8M)?WZ!&1f=0J;?J|? zF0_3lF)fQZaJdVKzasvY_-o>CdQ9(QMicvXS^Pcm4-|`DuOEqja^h#=zleWv`d1mL zTH6%xd!M$N{wdnDSyGW6zgVE?w*X>>o)kI860rVXEK!_>V%eD$ikTBt$C_i^QI7y9 zHYp|))4UYpxQ3P|wH-T-UB{^motRpLIbRxd3qWxo#c3(d;I!ZD6bCsyo#SA~=?&G@ zB|oF%OpY^C971tcFWT1zs>N*5Z+%$w?38w+I0watDGsA}8^t*(?m^M?Y)Nr$ih4v# zaUP2EQXEckKJ~rg{EiDaE~vg?Kbsed3prgnr63T3u0U zm!LR?;tCX(q^Q77aVd&pDK1TM9L4eK8_RF0Ct~&#tms=n6YOMEhvITByu1|Ju3B*d z#fdrX{1qv#LvbaFYfxO7;%XFEp*YEte35M3z<5#9o3adV1WXw=&< zu?{akY~`xNp}39XwvO9LM$GLg`h$Stj(v``;7)ydXNtSH*sgMs`RvPl{Jj z+>7F=6!)fh48?sYS{?WGa`$uGUzW@B2T(k)Paj0_V9};WNr(3NhfzGdPaok)M^Zeh z&pFyE<;-IpH9J$(`k&$nhEAMF@gyfsc05J=Uar$9p6|@lDV`y|GM?#pmgCtJ&*}5e zbcnLfuW;gW3G@oRvQJ!1@m7l0$dhv2wG^*&;`%=4 z28#atSE)C7(#?*yNWc_Y&y)eTJ6d;rh~k~z$L>49G`c5 z!SO|kFL_sa+3^)Mv}JLm_?pYSPVo&V-gJCR0xJ4#itqI4ceP9{zUTP9;|CN!RH`i$ zd-5Ms{G?BRO0mB;Sp1Bl9^z2c`k&&Lxr|oV#jm~A-%tuEe(SW2@!u$Z@AMCjKRW*8 z__LuCzc~J?%L!LH{X0cp)ffNtOP@(gNWdIhDo_eU=fb6kQkPOpso|+bN~OMJ**O(T z)jp@@9KQ?bWp7eS`l+d>W{xe#wqwW8ila1@Urwz{Suzc!0Zt5bR9|w!2ViNCE|qIA zr8y~0PiaPVq|yxHoA*jHDG-%r?)BBu5cSNGhp&=}&E}Uw`>8es%;B72;+O^r&qZlz zO1=?Pn#aNvrFkihrZk_^I{ZUv0fjFS3sM^1rx$Y0!j6kj8bN6kB|rRA8mYKySuC!W z7V8teBS4gv@GN7*m(C>}m!dS*iE)nO4Ra-wmhqY{OKC$&%TZd(FPEn@A@4bqCQ@2~ z(khfz^rV&g{FU<+8YOK6dD0|GehVPi{hQM28U>}^BVbCtf18hm(qxxko09MUl-BKQ zSdY^BeR=~CHoZ#QMwB*oViU(rDQ!<_GYKelbH^iCN5}tA+Q|tm{+;mke`!};susIbI)Tz2-g)+P+>4R|IHkQQ?W5)vy)Pxjf2a3% zJb+R^{+AAN&cT#?*7ol0oWmS71yDMI(ve0ueH5jm`}8r+IhK;&ok{ZeUW_fBNJ+t& z(n*v&{+AU0DV^HSdzxRK?sx_z5B?AReBH>G>}oO>z#*O~W;^S6f|pk(Xn?{HN@}zg#ieFRPSmls)p>y4n`i<%VO^ zF){2*W|Tenm)n$mc~I_9?)FosqC9oas`50hc>v{sIY)jd|BJFBJmo=@r|U}&rab)= z8Bd*&@=Pv2b6;kN^K)ypB=gjv&YazG4l$*9809&gn2Ykfl;@^w+tj@*&Yw?`x$DXc zP~MF4f|OUIJe=~9loxWDg&h}>q;!sOT$J)iCq_{oO?ffOi}y75>{){H7-cc#J^f3$ z{8-0vlvi?MJmsaGSjKT#$K@QCcbt$-T+@k(lvgmC@`^df>6JZc6~|Q_CmHJ3%k^(( zu1d58;kFAhch?rUCJ$+ zQ$EC*TTtGT@~)J(qP#ujttBIYZ7BN|km&8E_=@rlp1LDtD{g1XzW&ckvF)t#F534{ zmfa}tOL=#v75|;s({V3H-$5$x^N;?ypY!*3Jizfl$_F`duwlPl4yAlN<-^2LL5EX5 z!U@HH%Ki0!`Dn_=P(IFbQPwR$uL`}!J%RFxl&`0J66MP%EB<@-Qz)NGS%ICh$N%!_ zPM_g;rsG+z^X#5NNuEpjJWo2`@dC;hIdP$(#AL(8j+Z!IDrT?5%PHp`>&O4{Ri4+U zfbunzug!%iEB^QC8z?LIyW~xjZ+7AqN1tNKw>f<~<+~`~(a&|KF-6OsyB&24;FABP z{1WB+oc8s9xxfA|Kj_Sd93Q6q2<2xfKT7#Y=RD^4xPoW-33axfRZmfVTF=GA_xLYI zJ?FyDQ+`4Bq2jzK`H5dR{W29ThAF>7`Blo_IQ^RA>y+Pc;!Vf5D1YL_+mzoi!s&M@ zzvsmJls|Oh10~sQyKNkmKXUw7mp%DUDgU2~edhSN;}?C0eCd~8QT{sT^!YXg_s%Rf{8#W-38sXB`PPWb7rP8MD&ziQJIy>Y*dz@ zGL*`KRA#3#AC)<%D1uQL<~V2WH>c;OG7pt`d#z?0_&rPJ_tXV+X$#cKa4Msyc>J#{ zOl5?pF49k3l*-6noN-I2_(o7=aS5p0(ITv)R>n|Sh02mtmZ!25m1U@mr81t%xLm-6 z761D+Rs476a=o^$OrWwNm5I(=L8-piM8&6%isHW>$f{7qevX+>VnM`GEDw{a%Q$S^1r`Mz6Q$u9~YgsBAI&ReO4;w4H_=^8jHgnuuOkHl_ zxTWJ(j$2dN#)y6$w{zz9;z-`(e`QB1|MAP6`uv@#?9wlBS5MlF%I&ZBabt2&>`1x}dQFI zIafIUN(tMJV&!To*E?|ym236He2IgpTqnYw?^JRnH&VHU%1u;m*6p5qPlU4Hnscb! zuKn=J9eP?+xs%F0RPM?xr*gO2SJk}Nd;Wi^JWAz0ts*M-J3gQxqss@WJfvw|^utsh z$!VcIjF5)MUH=nQH=^<+m0zhmMa7oQPgD7j$}?16b~B!(@*I^HsXQ+mWY`PYiif+w zFNtGSuzT~$D^%X4@+y@#sl4W5uTyzL#@OQ_LuGu6$~#ovR<3+~`*+fNF7UqN2NF=H z{Yabkm5-@>PURC%vhMMj6aK8nl-OfLyStb2FC4%0j9;lmY(t>(4VCY+l?G7x)>FST z%)11YADr`}x6w~jes-VyBKMkFyZfvBMs)^n-`}bHLA6ZfPpMT;_=_q%x>^vY8aRfI zkz-7?sE6iCEg9+=S+zp7OSP&?@oQA;eY!!l>CB|h(Nh4bnPbbbO;uY2`q{FrI+Zi0 z&N);~cz|;TI!^2Ouf7d~s7~iL40fD8=Q}+k)sa+ZqB_54nVISkCwwZD4YN|6%{fD< z&P{c8&oxJ`f$A_%nv?2WQ*^q(JdX1^&euzlwgsr_6#%Nk4V_rXabc>9xbTQvn5rHD zJ7*NtWvMRaVvCEZ?4zkJ(Wl2a#~uM2Uq^tbj&&U8IG*a#u4kECv(w8_U6<Ufyr;f4|r z|46DQQay_5u~d&1({_Wa$7t_Y+5P?B>hX%7)e{uBOhEKWRL^j;Po}Dezf@0kJk9ZR ziS;USrgP4sdM?$ob=J3fjvn!wfT1qWb38w1QoWGs-BfL;UPtv}s@G7JsZ=kedKJ~n zy!6X+OQ_lyymE?Fo^*9T>Dp{%KN%(GSdH#*B{xvLk?Ji}Z_=^M>dl6-#88*FI^O1Z zyO@@wqVJ@7S6&^j@;y|arg|?`JtTF3`=~xf)z|-3t^cWN@$X3wQGK{iKSK4g!a$rTPZdkEp)c z@2hW7ecLPejw-0$`>vz*f2h7s^#f1+Fi&;*W2#?J{lo=6rTRHlKXFn0OugMaV3-rq z@Fmr+WQpjnseY5wZsB)Sf2R7qvMBWj#~-Qwr2SH3+D>Wp7ixj?f2I1H6Tef#i9a0w zr25z2^0k67dzYrO7E+7U`9;S{vevJasHN1(x)i_SSfy6$*;%Vo^Ua@{Hh(TMA zYV#RE&F7ce0#5rBQ1dB3#w_g2MI1-yY>(s>|EZ0nHmc9j6rj^Swb9g;p{DpxZH(sb z+LF}9QCo`ISh>->k+0!vvm8Hqi+EY)M&Lk=n}6 zUn%D}y^5X!NO+P4du=sp+fe&AwJoTvPR%yhs;5!gnc8t$7}s{8wktLB;cnR^>ukGI+d~o9 z%97?isqN)H*_+xvI@4~8C_9NKh5J!Eh}!wNt5`raoy-==IVwbdJSbp>BMZ_mH!xUFZ#GZFjEo&vQKA@dCr123u7s*TvMX zrgjOn%c)&TO~GF>X1}2wAF7#ESGwd?;@C1?xvrshJ+*78U8j?W#J z9B=+d>aEmn%dM4rZILkPN@_Z6L+ws^)rwY^yPMiQdaI&#uO`Zxg_nn^-RI48KeY#` zJ)rDfacU2#1?|fW<`8R5+3+aM`=~ueV=%SHsW+%SLG2}KPwG&O)LN%~+WW>c)SjpI zEVbt}Gun7GwdzYRPUb6<rLtj^;G97?SNlBqtT|`qJ9l^BQ~bqp}q+9F7+YQr=mW9y4m0- z-p!u8r_~2ipPu@(YVo??E!GG1lcu9SIHwJ%&)_mMIz5x)%>PK8h5EeIXQe(nb-e;W zeW>mqtxMZ@tk0n{c=chPYfeW$?O&hU>3RO4XFlrlE0fY~IKff-Kc2LLB$c`n^>wJPOnnXNtB5H*t5TojdRBAvJ4*3&{@*$NIzW9b z_0sy}UI?nMtyFQ=rM?mM^<35ZF28}}hK9KY-7-tzCe)9nzA5!Rsc%MoC+eG1--h}Y zp1P%L^C>{W9{;6Z@t^v3u5)|G9UOOb^p`t&cJ55wcm8cyNrScKZvCQnr@lu{dn@ln z{RrxNQ`cL))c2vjulIrd9QV(A1@!}{ADGj9&cW0V@p2C}^t^{rKRlwo8*PW_CW?sLwf zezu}Y{T#=06--nYO##lifcmA>FQk5n^R1^{JjDZ&kykIHezm7wPW=i!g{)ucc$FSR znoN%BW7ksmGo1D7s4Mn*t{bQ;{yTjWb&vnD;TGz*I`cNi+a2#PbmC4Cs_)&@Kc#*T z^_QvNOZ^GzX3~SyJ^t74_qKT8fBpXu^@rWhk2pS>d!G7Z)F01j=RZmPSug7;>QB3# zXZ}~ubJU-=R-pcZYsbYFRYcR`{94-`HK42xrJ`qx72^8 zu0zq(zxVq7;OO6fko-^5-0PpeQ2*5=UF~nwfA?H};xQT>8nyr)Mx#q( zDjHL3Uba4O#hC{h185AQF_6Z;T3axJ{t4WSU~pp>eN*Yr*Silg=nltV__N-Xe>fwG>s877FE6E&ygZ*$=w*` zwk<}ZxBu_;U4q7vG{$IkWUDfHz`p-xE*eW?yoO9e`#-W!^wKo^{7++9ztrYG4ekGA zYv%Ms8mrP+fyPQSR+LWLOR+aV8!OZB;BS`Ln!(<)XiTEvpPOi`rmbLmpGc;zuIZ_< z28}gom^ap%>EBEl<@_yZY)fNH8r!(QR$dY94)q$v-fU`YM`I@%+tbjoPZ~R@1ueVi|MX~e zu$^h_LSt98OYSI}^%}d=*vmEVL1Ryqp7${mP~G>TaV!lp&%%C6V?Sl|GuSi^pmCtK zTN?+_IKr*+TbRZnP9N%c7>&cF(~F~VqzE;{Q8cvwL&IPG>ZKk><3bw8(>TRj{{$K* zI&l(>lai0<2)MY)3{)Y zj5ngS<25ucrg0e!y#hevQVF;o8kgrZjVowe>8V%sIal{(uBCCKCtc@wy<_j?CK@+M ztf%c3nk&+{)$E~h8%-NKx6}BE#vL@?q;V&W2R-R78h6WPiQPlvULQevsf5OTj`ur0 zU??&1AENOTjfXwUBaV+c|FK+##^cU>!tqH%PkoxkOEjL*rOJBN@j1um9ba&K(Xg-Q zWg4$|-d7!8>+@fy@kUNN|1BDy(RiE22Q=PMcIkhY#(SRn{y!u??5BR@G9NpBLgUk1 zhKAp%sg9p}(ieUCFKK*5<2xE(yH0-vK&5;u0rQNqeDC;!qdo!Q8h)nPbmA8pztRk7 z{MOg`yYv5W{FBCC>b<73iDSV~{k9p35I=H^X%=Z#X_h>-+|O0X<(;W5AewcWjUKb7 zA#n{U%}jjhY&o`Rc05Zr*XH!pG{@4MhUTI)2hg0^B?mfAOH<#;ae9#BbdG~*PET`2 zr)Myf6U;NsnR?!64xu?e%~@y;bD3EkXQMgP#b)n|`7TiIz~-DTGneDsH0SBd%u92= zobGcLaG3>Z4)1doqPeiqG#7Ckk@KA%X~Hf)%5gEr#c7WA)Fm9pK?VFp@+|yGx zbKIQf7Bsh`xupb@Yb(dCX>QZ^!?sH5wafN2cc8h8%k1cw_uieH-nl0!=kMxH(yp%tL7&NAoZx$>zfykDz&E zzrIJ&Ji1RG+Qro8#?{chJ1k^WNoncR%kvH1Bne-Y8T?>A#=m(_Xs= zX!?6qwzJoKh~~q3z|nk!=HoOUwT%&){tB3_`fSp-^+59pnorVvN_!5rg=Om#o9~*> zkSs^@S&}Zz=V*RH^Ld(Y(|keig*9KK`3B9GXuhn~qx|!VGTKDke3j;FG+)>3Z0ij} zJ5}C%ljd96m9o|}rmbz7I{#1eU78=!d{3*arXK#fc^}aHu(yY!G5E2RSSd2~Q<}ff zw3hvm=4Uj&qxm__FKo$?t#txTe-FC(6-{mX)AU;a5#MTDTe+gYr}=}Fn@-#ElFpy9 z$u`7(mVi}ZQcEl6rcD9Akwi3qr|GZe*{ZVnr+elvk^%{`Hs3x<0+O(IX$yF3`Xnal zkQ61Klt>yRWs-_&VU}3+lPZY^|D>LC`g}bCAW2BlT$m&y(f8j-+EcP?6>55H%PX0R zWNMP(B-4=0PBMUGFv&oY>AdJ^N%}_}l0n+DH3RG?tEMLzLNWu%%p^1F69-!0tVyyi$yy}qkW5y;lFZuq0U>ofTZ`I|Ox7b=-{m(T z*-%>tCTR+dko?9Zn~>~4vMI?nB%6_JNwPV~7HUT;$Oo_2aVy8I4PBe>|0LS~asKuy z(Sl*JBZ3tBnP;X-AVQ!*@t9L5}htH50LDwXHT{P zXiv%#YmWU%_UqYfMVLKy?~oiwatg^oB*%~(OkziR4k0;IsrG`K9TZ6pBeCy)en?{9 ze>ObQ@hE+TQZIUFq(`lA3(2kd<}k@^**b$r zZa4j&bO*_uUe;YX$LV`W9wNDy#E<9ZQKgE`OPVxoG*Ix9Oj{XQhRr`kI2RHItlJ86ji5CCTFY|sR z`NQRZBKeu*7o$~#s{AX7o|};TE>4fB_%Ex>)hTN6w2<3L8fXI~4M`)?nMq^PCTWqh zPFfGH}Yk4+?9K~=NqFP{O^l}J~0 z$(0>fQK|}>q&MqDtmbH?^n$-%u1UHc=~|@gkWMCDTe)%%%bs1L#x>$KaL3lx-8^p;vRrCX8iPP#Se_U@K#NVl~xMY^4a zm@nr@chDAGs*NBGpVad1L~6v&r2avb$(z~|NP}^`%}IC5)=#tbZz0tqVA4HF_aWVj zbZ_-fbCl_n!TXZ>&X4I_^)#=`0X_r{B(=N;X>pPsOnL$7A*3gh9!h$+of{-QOi@&Q z>CvjJ>T7wA%?U5-cv7qB2~#-EJSo25G^cB)q70s-RTBo%&aQZswTcmH0zNryy>uQTFa^u^i z??|m>_Yz6pBP)}>Px?9O2c#AXJ|z8=^dtA)$F?BUnlSxDxr{dB)t^6;sm9Sb`hxT~ z(l1HBA^nQ_eWDT-Y$!teyBQm?S7(-?g%xq*WD>Wt7hO$mY*4$ri|kU1m7hLS&=J7Ir<0IF4{!)N!QY zKlCg{wzy{;-Pfl0@0=yctSy!zTfr~Kl8qxb;;Hv z+kkBS|CQM=za-n3Y;Uqn$aW;#l*~WxkZne`IoXzETl{aXt^T2T8?tT5wkPWy{!x-j z-yxSFGg{wvAlr#-XEN)bemC*AoxA-*+a6?ldUiby$m>G35807q`;r~(diEpRpX@-g z1E$D$mVs>`jv_n3wH-}%4B2sH$NsP6@&C|vBAH?`*~yNl z{4HtEi84(_KJLySyNc{gvP;R%B0Hb#Y_jvn&LKNjcQGbr=HIYY>eFO@ zKmR3rj_mnf5%zRXR=r5}KG{oTZ<4)C=2MLMQ+fT1pxJ9qzfShX6x+z&B6~ZJjb!h5 zbH6LsDVIM2R>IKV$-W@_i0o6ck6pkY{`QLSz^+`Mktu$fK)=zyB>T$czZSEn z{9Cdg$@GAp%%A^edj2Z``BM*n$$s`0|3#CdE`KHaEvKFT2Q7>3f6~gx{-RZ-1+9oy zK}t-%70?Q&_>)#_G_9h#Q>)}ycGUA^D@^;zVaUVxt__=3j?XTjL{Qz1ADn7Ih zay+>2?L#CW{$aFkrgb>2b7&nw>qJ^d(mH{bjsVd*+I!kD{T_I%GmoR?M}SO&g=_P? zK%H|7tw(9yO6xvax6!(rmV!U6JG_nVbi6BX4yW(&)O&r5>#?2mC=T3D>jCx5Jc6}s zr1<+^QuQz`fB(xQ<)z1HJx}X#T2JI^X+7yWpYrkbwBs|5&pJM5s8TfgUZC|FtrvAE z%`eeL0%PhSpECzIB=JT*l*n%g_I`dgp(f z|Fg^d;`FbMzd8Qy==;@Xm}1&rv`5p1_CVSN+HKka?I!Jzc7=8%J?&VM?V@AJv218b zPFEeZ{-<4cY~;Pd>4diCg*@ia&Rk(j9BaFFhxXL8yR@guwdw9mWlckSKyM)A!@NB$ z?b&Es5kqJXqCErc>0H&|Y{MgHPj4s%+HEgAG7TU8)XKuNYhSHv& z_UyFhbX9ZE_WggamviQ#?dLz+I{!&Kw@vY1Wr?!@?L}O2LC4{a3(@}j{HJq9&|Wn6 z3GI=zN4aMfb6h;_&Tc?`eBD?&-Lf zx`CA?@9jgoKVP)>GbZi*y~G3ZvS=UZ%!B&n9zrLjeJJfGXdg!V0osStzMA$Cv@fB3 zB<=GQFxyAbwvWGEPx~0ZJeKw;w2z~Gy!7PLQ~LzkCwl5heU7F8=bTFWEZQFb+o$)L zXV6yg&xMVkeKu|X6sPEO`(o$Y>Rk)?_66RlE~I^t`k38fv@h-xm+D*M?aOFiN&9lz zS7_yLn$5i?sixQWADp;`_Kj}RwT{=(wo2(AeAII+mxOixhxX01Z}Y~zh4!u5?KBN) z>)UDH>jJg~e$Z&Y&WC* zvYrmKU!mRG0;2tzKEl?1UG|80llFVG-=h5vZGZpQzWJ%X^sanpiz|!d?e}SaNZVij zHIB82Z2m}(2HGFf{)G0Yy&JuJ|FiuWZU4@H`*Yg*3jo@F{!{M#$`$sGfYScfEA<_n zBJJ;K>m^^>{{C0{N2hi$Ym#oq8_}^)$+)mTb^ZNT=;$(DZqSK=DC7m{% zS#7_FPKQpHj`63W;|6!8rekIdbR~WZVBYBHAGNeQAw7fWOea5E7wQaF3wEZrrlB(f zof&0}?RVJ?e%^UHGt(JDXBHi6wB0sSVmp(a+337YXDFRF=*&*X2K5|tR-iMC&Z2bY zq_Y4WD|CL1n$FzrBH!-o=wKloz5k^md>etzf^>$fI6J){`Gx5C`Jc`rZmpmHF-ciI zlFs6EM$uVJ^2W5Dqb#H8jH9E?A39^a2)+F4mrKzZ+bd2*k9X$Mbe5x|TLZsb)=;#? zfzI-d6C5XsDV;0Q*^tgkbk?A=GM!0ueE+AjYR?RL&o}=&{!&S2^?&f!q_Y7X?f=l3 zOlMs>Yiq~2vrb-Lp)S{RT))S($3T+bh>qdLbhe_i37swI`1c<={{4rJfB(TOSLs`- z3hom+TYKJZ=xj$v-~UunuQzV*J<2};+VMvKDrF}+d(+w3bL~QBcPDmr{Kx)JXAjTo zw*Z~Ja85mUqjP(| z8{gpqcX}y$|Ci3)d0BMsQ7&<;vQN;tkIut%?sxeIG%s`>bbLrNg-MF@hzOPVsN-Xv z{qerSC+R#-=P6Hm+8g~DN1qNl&*e?;oEKc?MLMrK@e-YvUDYeODxnPX@Bef>{#&_< zes9uwt2brXi+-JV=zO3DJ)L*yyywLGdVF9%i~N%Rkj_VRzHs_uI-k(-FBNw_RZFRe z&**$E+QOO@YJ|^6biUG#oC4j~biSdR(D|0m?{vPS^Anx#=_vBM@joh;Ki%-Q{+Z4% zbbgipWx#K0Zll%of6xtG=1)3*(Jg4!>!K2EEL&M!`vkNWlXN4xRk|_VGTkCwE&ip% zeo9sRR~GA9-5T8{-8x-g{F|7ol7PKiXQ8i~(zW>iFS;$dR$QBIm#&v+lC~#l!P&w{ zcWSx==t_UCobEun(@L9#Zu?1Q5ZxK*`lE#IV7dzaJ$W-sb+NyI?|7jz)7?f7mAXUd z&Oy0g+cm0QMx1b9LLtT_N+>^Sd6Y8{x_Sg z(d~Yuy9C{(=vvZ}dW>$WtkyQ1yJJ;^{p<-&cRbxy=q^on0^Mck`ZM3|vU(8?e065ZA5u14422=MIcC*3vZu9<5S+N!2I z*>m~kzl+gb*LAKZS6C7DE^~JSx|`D7(CfGn-A(9jtcqBJS{5VZna$|>H-EbR3b4Gf zCEcy*ZZ$=wFS#w{vw>h4W|OK?yu%EwK>WUzW6tet#Z4E&^?~+p>&U- zdl=m#=^jqk-VV4y70ka@(LIXp(Q=4suobe87rJ@`O!qh$Z>nU*33N}SdkWo?=xXy{ zeEZo7vwJFC-}$#ytErvu9J*&P%>i`JWE$(PdIf;)*-SIk^wYJ}bD8Q*y5}*Kb;9%M zen9sEy7%(`RGkI1^ET3kpEASO_9n5DIEe$clQJ_i^R`=N+~SrQx6DjiW@c`;%*@QN z1^;Fmf9scQSIjv)wUDj{E9kFWog`y?YT zF!B^5&oc5fBhQTG5h8}?78TpoxPZ+UY{*;l=8S!1Ck2OMO zQ`(%;Jd{?TG%uw^Da}V|{-GudP?G1TA z@THw+nNj?H|F`7Mzi97@l-8rP5~VdMtxRb(N~^e>RY%EL-Q}z?O3vRX{hiWU&Z&?8 zu3&ZAWQmO50P~kCU!OkyI`J9P;l6TMF?>GUP}M* zQumE2^#G-(C_PB&F-i}4?!%NGDHx>cFa$`$$0_OXr?Wko^H6%4(o2+{q4Yc@eFBKm zb479CFAVwR|6PrjDZNJN73X|)ET<=5r}Re7@0@Q@K9thilxL#!4&_NHy-Vo_O7Btn zn$r7}{!8ftN*`1D(2IZc|D}E6LO#s}Qu>V2m(KRN!(j+e8^0Rzd_(Db&;8b+FEUF- z6flYl{E^b{lzwuCpDF!H>6bi9P)+_VPg44W^7xeg6tN8DaUB^a&y}e1Fa(HU0?HFo zo|y7PxiW&{nIunAo{Vyh^5m3Dl&7FP#-&Z^JX1NGI_GryG?b^MJl&|eiV#4#Ou6bj zCOq(ha{dKp-o|pBvZ)kNjwv^sx#_SqmW{HUKV^UaE2NueQBEk&NI9iEaE8obf0$c1 zf66nAu9Wi3l>bh77RrlKo|W>vlxL$nd(K074$5;;o^xyw%5%Hed2+Fi&qsM7W1u`g ze?ZPI+0%OE~|Ml$WNw)Yw{F+A@D7)y(B7uSR(V$}3Y| z(HT}6%RqURVO>QCpu9TezfoSpIoBM;xt7q&!c=XbNhEy|x#Hvj*j^Snd(UCQq}UOWX@Das!V%YHOOK6W1Ye`okFo}M)@ns zpHu#l@)voQpz}D}*ABnQg$&DnNBK9(-&6j{D3pJo{A0nOs(Hm4 z`47r+{)H$zW|cR;qCg;N75RTE;}01oq*A6b5tXT^OiV=!ek%S5P?@xlBg*7drm!TH zDGQ?Tsj*%9iU)-p5rIak!|igDJTfmBm$7_!176q~e#qjKS!pn8}o?%Tig6 z%7#>yr?Rp)d<7~iQdvnnwt-+!HLl_fS(VC~MxnBr!_}#*F=m4e$85RKm@R*y;;#-X zYdQbg!xsIWN^$;^%DSGloEsvdKnN_Mx&dm0hT8LS<_zn^M`r_1TQd=7r7e zzEx#QCvH_xWR`8H?C8X8sr-Y=_Kt5S1~a%i+Wo)%4RK{BDpuFdy1iw&26IF_yHeSW z%AU@z5I|+r`oFRlmAzHO`<=?Z&ahujp|U>}U;nF=`+r&NV8R`!975$!Du+_Jh04FE z_@&*-VN{0qe=A2&Ia0ecm7^RU?eG|fy8P>i?*CFb-l6^ilFEtdmm>FMDyLAnf{HHx zI*;G~t?2$Ql{2W={?El!&Kl;PO~v+q{Hkvy=Remu&l7`*mHZ1F`YYPXMWgDv#5pge za+xz+USzp4RIa4rmwzkz_$QTX9Qx(oivItR%Jn%vl^dws=n`%kQgr{tfKF! z_~PF;_Ni$9hsuu*f1>g`m7j-W+vc_3|El~Zfo4O8RQ||u0tg-@7>8h8f^i9EB^Zw& zA{d`wa)Jp6CMKAWU?S;Y`}yWl?7dRp&OeazCzwp;&F>inQxHr=F!cX6XM?E;LIU^y z!88QEun(psn2w-CFrwEMrj?yY3Ccsn?_e6yer9mnh7GC&HG;Z2-Ry645gP;)ciD|YCOi8(Yf~4p^<21(}^a*An7!de1;b3|KeK@Ficax9j zU}l0@)Np&PU|X`1HXFh61hW$?LNEux+yrwH%%xJsW5vZY4}mZBgLw(&BbZ;BTctjP z2>kp{un@t*qF6=tr+7A6f<+0;Vv7+hu5Pj$DApY5xg^0d1pfXv(Eg9=@`41*5@`QN zFTU+kYOn&qY6L41tU|C7fg*w|oWC1V6}kf8##x{Sm zE%-aZI%<&#HwN|fdIYButWU5v!3G375Nt@W8No&bTJRHWOrXsl6|s9s`2Y?!C)k!? z3xciWMgo2RL2opItqFYbZz|=(GWdtnwPuphyJ1Rf$g7Z4mEh3zJV zacZa>OmLVha|pqq1p4@c%)YgKd-->9YQ!Eva4f-*1ji5@B~5H^KR8;52`Oqkj^HGM z<6Y(n1Sg8_(^hP%=wyOZ3>nsY8iCEP(+MsiID^0xJCopig0l$BbY~NsBW7!q7a=&8 z;5;)$KGX|2GV+B4`s@S2MFq3HSF$f21eX$AM{pUz)dZIlTt#60?jL_JnKsU?nT0*C zk)AT_wKBL7)xUZLpoK?pBf&icHxb-Ha5KRz8mnTs)s1i)fiM28v0j$oP69c99{@W4 zFNMW_FM(-gdfuloBj0krOL&0bL9LhkUqyVxK1`sGzsXS61?tVm2wMb?6Z}r_1i^m^ zo+Nmk;3#KhCwPhA1%el4H)GgPPov(~#rmJ%RhdFnyrzqa zLf#;FpWsb`_Xyr1c*oQrcw4P2Ch5DX$V!<&do>e$K=3hvt^gDG`rqEG8nYb?2tKiv z5`3!m%DkTud`s{-!B+%d5PT^)CevD~e*Bu?8{tOuwh;V};AevG2!1p>5cs}O@PnFQ z4C>;a)QK8ezYzSUb4S6iD(*dK*L4a0Ae@rmPr?ZaAsmlz9Kvz+=5ZUHIaL3K;}cFG zJonG$Z^MZQ_2mb`iA5JODWRSP)TnTBwI$U0-(vlkZJsBbiZCRcns9`0jM%KZ!)XYo zC7f=|wtJ2F$9TmU2up;47cZ-uLZ1sJ$G*vCMh>fl5uqV^BFN>qh7H1|3}uZq$E$)d z;o^jC!dVDAgnhy;VWL%f=<9!*vtde@Nq^JFmY3E$;ec>P!s!WTkbDzpS*mv?LK~13 z`C%V*gtHRPOE??h9A0p^3lz>tI9H*Yby?{D{}|4r4+U5+g!2(DLO4I+!g`MxEucaWa~Ra;geTusZ8a8)@~n`PnZgx2;o#BZ@OT(i*MM;hVUgqsrnop1xf zbqLorgUgxQcnjAvPC~8!6>-812{$3!$hF;A!tH0{+~0~4ZbrBb;pT)}6Kw4o`idQSL*za3*3j$7XLToNzbxje1N*Z>|ky52u^sAZV-nDJ3NH&P{P9q z|0PGU(bR&hm9!b@D`6xo0R!0-wMR*M1rG&>4o<(>Z;TeR-6P`+V0-<$*-~Y9C z*@v~mlL=4J+93C7c0D{iP1e(}JY6ao-9A+po~e76BA!inA))^Nh0sRY`Gn^Zo+m5W zfH99My8M+!k#PT5TzIi4N?xKiYMfj~Xk*}V!mA0dP_A9_4gC{v;Z+)q8WPtKUgxE* z6+@xb^~%+Jzmf13&-Ejq;mwk4YN(c532!63lkj%JJM^7!D{fC}mTN!xjk^h7BfN+3 z3Br2`A0X5^$IISFc)wJ(Ic@oxe4t-Oo>Z=ZAtu?Ic z?^HLUx(-$M|Al?lqq@G=yMeT?S`?<_~ROtMF-icHXa{9sEqC*@W>d?RcTs=%`8?!8b z1l8lH`t=jF^eC!Y{8K$9=b?J+kn?z#sm&ipPIP#Za@D7&P&Lg@rTTBGr%^qNs-OR_ zp5bjjbCezY<8Re-Mvb>~soLx~&jp^Jb5gxPl4ZAxobC?-)l0mtONTn>{ukBD#VH-G zqZ?>= za|^ug(BJ=hF4ecFe&llAruq)m550-up!x&V-(BX9RDV*8tNyHbCky=I zP)9(i{$_AU|AXqExqQ`F8;9B~)W)S2P#cfh7;58Fn^dK06HuE_GHVkRWor{tnF__b;T5pj%G6dF7GKq~6arlS8lKet4>iC4TU%?$xi&Swo>OqHOYJsl>rp#`+WORX zp|%0FEvaotZ4+u6xtxthwaYJm)i!g*Yhm+bgf)V8CxwU^q)?Xa!Ge~gl#%fHn8 z{#R{BFSS!Hf!fZV<DCF^Jj$ z1})3+gQy)&%`bn|T}B zC3i2ilc=3R?PSk7#anl(!_yp|p4aR6na*>T{BZ4ThyMNln!f+hc zq3-Wb>(fdl%Tm1~)T^Fba#*JB`xtfK4yuQvIBoskaGpB#Xe`|+O@}S&v7SmyvO($A zF}sP=o;d0~>S~C($)4%z8TFZ|_o>fBeL#Ii>eH)_>NDuk!;8of8E!v&30t3q`mEaj zw~fB&IAFZKCEG!IjspZbE-7Z|hD@%q`b zTYVuRHiefup86uxuc5xE>#!L0U8yfl-PB&fYh2RdQq)&)WNC-XI9%4@a@3bMWXwN& z+fYibNPQ*ht9kCq4iy5ZuWBD=6sPdjsjo4_*R&7MI&m#;+S=4Np#FFHC)VHC&G4)MkH_fehj z>5%%?!Zi}MrM{ExiBbOt_3fzdK;1WgOjX%xM?D@Ecyaijx&}6Nodt4aH|l=fQu^#c z{bcHUQa^zDUOpJ~{+Ieb8UsT1rLOnC)U^q(pEHf54Fk#hGt1)cyOP z7C>!w+vY(1QR3a#^;knGf;nuy3O&YseerU8R~CSf0p_S)SsjNyhf3g zGN^g_BK6l@bNvM{^_LyKLS2V{9M@j}dqdvvu8HYqk24~EC0wPx zq5f?_FJ|I*)PJP@J@p^doP2g@w*Ex@w=vsUr~gd-7wW$AZ?n~YR*`S9QvZXfO#M%y ziHRT@k7yhsyZNO(G!TlH-BwjL=#GxXd+2)IYg5XjUk$pXlkO#h^8c(oXGEg z8H4X<5=|v(roU10mnqRSL?xnWHF%=wh(;vPc=FeLhS(V|4l6D>xxB+=qTI{c|WSg|p`ew}D3 zqUAIVqos+KAzD_|<$qh_YMV+#D-f+jw4w}Unn?J{M5`06LbRGUc2#AW@~(g^X6u}2 zO`>gyjCmuXwTRXyTAS$a`I4Au9k=tkMB4e6@eQi34Tv_(H7}w=WCq!cXcOm`{}-p- z@QOAk+DiM_(H2BoO04N%F)`X&YHa@#(Kfcd>6ZTo(QZWB5&e^Bd!ikrYCadD9f@`# z+F5&v{=lyJ8|^~0t46Hx*uqKUVRxdvi1r}bQ(Bn<_R|>Nn`l3+6C#BGB6|zqF3#qT z`sDzkcZm)pdY$MXB9n74(aA)I5FJV6&OiDW(Gf(}io+$-nqa?Nz62gc4k^Fx?c!*9aMv?OnokDaf(OE>N5uHJFx-4V;YfuI}Q;1b3{A{9gRIm9K z)q5_{T}0;*T}5<0(WOKe5M4xcp^6xrcrGTA=NH9figFpz6-1Zk3?gbYUYWOu=xU;y zh^`^Jp6FVl>ttIO{Z#N~SL~LYNOUWafBZkv_cOh^JBaSgaqpwMiJm38 zhv;dddx;(*^4p!!ebP{Eyr1X+=hR=uh^U@@nCK~@M}|C)5mP}HT^jx56aQz2zc~Dr$j|@$ z<-jcj{E2-&Gmod{C>rC4voWqi{}%wOLX-(;Oz6l&G$tO!KM9RVX-wf+Is!yva)V;{ zOXgHGrlwJ*F@}ck`8TG?b7}bIe?uXFMyV($yh0;%q8z(lMLOX(FbjmTkx#%wg2 z>PHbtKX;c+les_e`( zX7N(9<_wO{?r;u=b2^;M;oJ`AaX7ET`5ewqV-Xq)IPT~FC3ztl3mYY$N1o+zp|P0b zi)*NeZArQ(&{&G@@icV)hsH9*)`VppUykO>G?u4vBaIbk>`r4v8r#uWiN;1WR(76M z9IoncH5%(WvO0}5XskuUU;aw0pD_@!wln;l#yYtULrpvch+%yi8#vE~2DOy6_i>Gl zX>3hn6H&zDCxRNAIleiKEr#?ho#KZsRBD?ceOsq{eA)3Z$Nl_&V+Y6e2tZ>ehdVp` zCkZ6Ibx3Pc}F- z@2O5XO%(IejWaxXCXMqQIm_YM4iy4u{F}zPhB&TQ0FGQh<1!k)4ryHEl#3l+;_y;~ z!|E;{v!Zpe-~Vb{N#h!4xXR(xVl#KwxR%ECG_KR4&M5Y7vEi{`zTB!e(KMc$X?#HA z78-s8sBx=HxXt11H12TZP8FBVcR9S9#yvFd7153~+dEBV-RJOr8qd&pfW~8n(?GJA8-6dyc%TO{C?wq4B;Y6@4V+Lz;COAJO=o#>X^%aN;Kp zKc(?s8sF0RjK)_^`JBcVG``eI(kFiY(ws&6@DRlnP=|4IA z+2Jn^f2Hx8A^O?#NaGKhB^rOyoSG&yC!{$}o=bCFnsS3Q$EP`gJg}{-tdt#CYEIsPdKF3+0V;XE|wb!0x83pnDZK<%la>HdG` zT$zPwF6Ft4I9!zGVva2Ca0!P?8q9sHCzp1(j6)9rO$!0bdvXPX`q_G^xf0E-X|7Cj zUC&yD=BhOR=J;w3S9iFE!!?IZSj&=5S(~O$d6{J$5pBKET#x2vp1Z!o4QR^$)7*&W zCNwt|n+-@&HWi-7ujb~$Mcl&SmJZ$j+X|<-4b8)7ZcB4Fn*Z>u?Hq1Tb0?EPa|fFG z_|H(<&NO$S`A_4?DbBpBlG1Q@PwwGxPltQaJe20%G=1~O*vz#y_oca?mKIH&{GoY( zL8l)`^PnMquu~3Ei^TIURpF06G~M|(-T60qiCK$^JtpK(L9FcaQ*Mra5)MA zj-2RPokY_;zcJ)Ivd^hBPxIW<#cV%&8f~6Q^8uP?(KKg!HqFavoUjE;CE~a^jBbN>-m*wN!iC56P(vhoZUgyZwG(8+Nug&>wc+k8)$7$X` z^TvX1|BBVTnWlU7<}F_KR+_gBId7+VhZ76`uVJi~-tF)nnhF6lj|Ce%8-ia?bl>c|cLx9H5 zE40i#zKZbIXazK1r}?q-yg~C#n(sR9A)xs-&37cBnEoCJn(sTq2RWUlg@BJn@q9w_ zCz_wqbg$n0FU`-K|8s|5h*RzTlBR-!etB?gena!yVebEEen<01n%|3JuR@xNEP7-p zl0Va$jOH(vr1>kY32FXD3s3&;(AxN?nC+JjmDV`4#-*i?|BInDKCKCqYe}a#aUzEk z)0)JQNp-l(cy>OA*5tINp*4k)Dn2Ex!vE8nn%0<{uISU6))}UwH6o&ot5(S=a{i9U zf#`I1E2K3)ttzeAXw_)7J-1FPazy^$k*32IE%|@_?0LV{q1AVKmsZY}w@c37>DjQQ z^8Zfp5YU=|){L}fp*0h&nbkmB`Q)pe)~w>p{dQ}1FEYoltZ6If@5H%j&Ev?twB{4h zmyuc_w-%t~j=HrVt%aOtVOmQ$vIwn39a)T)yZx3zfDL0>OXi4O6QCvM?`-b>Tg%c~ zPL$j)wN{|D0j(8jtwn1kXIq)p>a!MhQn1MV8?7yzvL&tU9odT3*0i>z zwN1Xx(SBOXOthU2;oEUX+cUK7n$`}IAW=Kg+KJZA8m?>jd3AfC(AtHT*<@E*=hE7Z z*73A?&WZATKmx2&+&bW6MC)vX&sjWpd|8Jc{>kL{aJLMGd zsMM*nPNU_{--3dz=PmrT&h)IahCFA}vgzjk6P@p{X-=I->uy@-)4Gz@1w+mYz2HT( zE_UP+T9-NEA;9)vTbI+iLQmFei2gx<)>X7_b)KtfUE|2Lv~Hqx9W86=_2RUjMWvSe zf7^>IG{2daoPX|2456hEKv7PBrOjFt;dal))Qj;%Tql?>uIMyL(84N6}O))(Z%c`p!EW+ z7d`os!kY@>bodsn&uP6)>tkB-|Fk?PwBDojA+7gm zeW1GRc)2;`eCww5(J0+M@gkqnvXivAQ~FE~K^AdZL;v5BVQGEk@M~J%7?RtTR^Ei~ zL=n&T4u5d?BdwntG5>FFU;bY|d&+D5MoXSwH5Qf1{}X#qh{quwAs&}_65{dlQpDpE zdk7HQgv1j$|HOIjm=(Vuo^;4L8S&(vI|Z>^J@J$dr*b%T5%l9}Ea{YKiKi2upJI(m z#4Td^e_}a*;=o}j9wn>9HDY)Baow8Z#0IfEf1XquWBGsLw!@CYuESi2n>tR7qTkL5 zai4f@;(`9TFP`4v4Eoa?C1-Rvlf#*bXK`d!gO1GRaCYK39GTPMTn5!r6`zNAL$7*X z;`xZzB%YsmS>gqVm(rw;7bISYcuC@gHB@YQ881S-s1CTsixDqj-j#T9y<;+g9i4^N zqSTzcx!ibZD?+@Ck`lEX@fyU-D^kQO5U=h$D-y3H^NN3EhpRYTm3XzB{+DE{!k$~> zzqy39h&Lc!+nN18-z{v#>kzN2_!Y0GN`8cUP9|Q{4Y0-i!DE;=PIYwJc(P3a}UV@qWbn=kN6MNs>docKuMBUG316gn#eXzdZp`FqzKJ4B8rKFM(66Nu&iheb{<8YqQN zCBA_8G~%;~PbWS@Y?5{+@mY!mmdxWwd=Bw>#Q!EfH>V8g=gZ*~JQosQOzghhmGRmy zA$I3)6pI@1?;;)J2{GC(&-);U4vAg~FTTzPf_MPIC z1j_k4@}onA0Ba`kFSJAAUujQC{2T2Fh<~R&4)Gtf@oD>~oPaS8A?(y6PfL3`;khSi zk4OP?Q*HPEZTJ6e`TrrkN_#-NM!RJc+I89y?I!Jp*44H+&!Mtn+Fjc2|J(Ba`q}PZ z+p^^LX)6RcC8OOJZi{)}*rYu@?b&G0Kzn8rNP9+yGv&f*&oV4H>kyfp_FRV3o`d$B zInf>yXwOZ1KHBrpo>!9n!J&A3XwNUi;!b-(+K16zi1zBV7k0`b4i}}pJnhA3FG+jx zVMR*}HC&4Jvb2|`y-ZFiDpdoQ8}h6`dllDeMcOOTUU@8!6IWGIIy-5zu5ZwYj&JC2BZnJ1+{EB8cQe}h&OhzV9d6-p zOEHM3^Pi4vLwj4{1${f(`_SH=_TIF2puM9){IY+#d3SQSGi|#cy_e&=(B75yo{sNE zdw1`+J=Af=U{Jm3h$T(ue_HSCOM5@n_0Lym?@#-nF}s*wI)L_pxdH}hA58mD+J}tN z>R+Sq!)YHy`v}@cstW7q!Wu`@K92S=w2%FZu2FG3?GvnOHAHotsOG5llW9Le`xM$Y z(ms{;6|_&IeG%=`X`f45A%M28|J!HLK8N<%nw8dxnlJwrQsCz~=lKpV$mz5%9Oho^ z^h+Gd|I^lkfFlY4K0UAW?R#=uGUY4e32EP_q*FZUA)u`gK>ML#*+)G2 zsKdt`YW=UD^m&rDS@o%$Li=gj&p6Msw4W=s)7#I}eu?%A;;~20_KQRM%Q?mQU!`Mi z@HN`M(|(=yXSCm-{SoaqX}?eVE!ywWew(�jre#%=5R45a1F%5Yd+O?GJNA0kQot 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
  • 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 aku?XiJstNz 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

    qrkNcyOZK1M3kp7e3jCrFhw+~1^ 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ź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 zΞ*8mFc@r=fAWgl7nc35PSbc|od`ZYD0F9Yw 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

    RPnR$Zqfw#<)3d@^GBf9w&)F7|;_5ue7S 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

  • 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ĩqpOzC@-TF|1U3*?4>HJ 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�wKoNIWC)M8s1P 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
    Z>1CRDso`kW<(7Y? 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%0DQ_Q2s_K?Z6iNd*9Z; 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%0A^RGNA^k6|r?{Qs28vrW>PCv2C~mI# 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 CZ7zZU diff --git a/app/db/DBIP/dbip-country-lite-2022-03.mmdb b/app/db/DBIP/dbip-country-lite-2022-03.mmdb new file mode 100644 index 0000000000000000000000000000000000000000..033cb902853476e0ccaf8824e3dffc62cb2a08da GIT binary patch literal 7209381 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 z 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

    A|FzAiWIfB`s^M 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

    r3o)Pnl=L}>GZeFkONeubi-_}x3(|LL5iW(; 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 z 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%0DANDa4#>eCsdEq0^$zf`3t8-=HUw2id*zwFo| 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 VjW!`5C42ne_{b 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

    `#2alxsVvr{*EVhZAe_msK5R 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 z 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∋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 z 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ⅅ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

    r?^5}M%6n8kr1HL=3o0K-h&^wrl|OR$v6$_W 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ⅈD;C+Sn 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

    jZX>r;@(DoFYMYYVliX(Hwj#H= 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

    ow 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

    =K18rML`hV;!uE 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

    !4e??A%r(4F2a3;zycosa{ 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 bJe@gr^@oeH( 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�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

    vmsp@)3s4Yb(4`CU3+aycUeoSL>o2&R114?a0 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

    2s$?OhoV*!RI!T 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 z

    r$`I@4%o@`|r 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 z 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℞bMyR9 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�W|Ri6o{7a&a<4mKGoj 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

    >Z; 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�nqARsjb;Zl+o0JF&9=&`X4$^m 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 z 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'smtp', function () { return $mail; }); $register->set('geodb', function () { - return new Reader(__DIR__.'/db/DBIP/dbip-country-lite-2021-12.mmdb'); + return new Reader(__DIR__.'/db/DBIP/dbip-country-lite-2022-03.mmdb'); }); $register->set('db', function () { // This is usually for our workers or CLI commands scope $dbHost = App::getEnv('_APP_DB_HOST', ''); diff --git a/composer.json b/composer.json index 8f17c3d28..ed632ffff 100644 --- a/composer.json +++ b/composer.json @@ -56,11 +56,11 @@ "utopia-php/image": "0.5.*", "utopia-php/orchestration": "0.4.*", "resque/php-resque": "1.3.6", - "matomo/device-detector": "5.0.1", - "dragonmantank/cron-expression": "3.1.0", + "matomo/device-detector": "5.0.4", + "dragonmantank/cron-expression": "3.3.1", "influxdb/influxdb-php": "1.15.2", - "phpmailer/phpmailer": "6.5.3", - "chillerlan/php-qrcode": "4.3.2", + "phpmailer/phpmailer": "6.6.0", + "chillerlan/php-qrcode": "4.3.3", "adhocore/jwt": "1.1.2", "slickdeals/statsd": "3.1.0" }, diff --git a/composer.lock b/composer.lock index 7ef31be56..5ce188d7d 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": "b7919cd5b669605d051fadd3818523a7", + "content-hash": "5c49f5a1c672afd4deeead22dc18a06d", "packages": [ { "name": "adhocore/jwt", @@ -158,16 +158,16 @@ }, { "name": "chillerlan/php-qrcode", - "version": "4.3.2", + "version": "4.3.3", "source": { "type": "git", "url": "https://github.com/chillerlan/php-qrcode.git", - "reference": "b625396e0752d79747a55205ae7e191eeb459dcd" + "reference": "6356b246948ac1025882b3f55e7c68ebd4515ae3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/b625396e0752d79747a55205ae7e191eeb459dcd", - "reference": "b625396e0752d79747a55205ae7e191eeb459dcd", + "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/6356b246948ac1025882b3f55e7c68ebd4515ae3", + "reference": "6356b246948ac1025882b3f55e7c68ebd4515ae3", "shasum": "" }, "require": { @@ -220,7 +220,7 @@ ], "support": { "issues": "https://github.com/chillerlan/php-qrcode/issues", - "source": "https://github.com/chillerlan/php-qrcode/tree/4.3.2" + "source": "https://github.com/chillerlan/php-qrcode/tree/4.3.3" }, "funding": [ { @@ -232,7 +232,7 @@ "type": "ko_fi" } ], - "time": "2021-11-18T08:46:03+00:00" + "time": "2021-11-25T22:38:09+00:00" }, { "name": "chillerlan/php-settings-container", @@ -416,29 +416,29 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v3.1.0", + "version": "v3.3.1", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c" + "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c", - "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "webmozart/assert": "^1.7.0" + "webmozart/assert": "^1.0" }, "replace": { "mtdowling/cron-expression": "^1.0" }, "require-dev": { "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-webmozart-assert": "^0.12.7", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "library", @@ -465,7 +465,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.1.0" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1" }, "funding": [ { @@ -473,7 +473,7 @@ "type": "github" } ], - "time": "2020-11-24T19:55:57+00:00" + "time": "2022-01-18T15:43:28+00:00" }, { "name": "guzzlehttp/guzzle", @@ -921,16 +921,16 @@ }, { "name": "matomo/device-detector", - "version": "5.0.1", + "version": "5.0.4", "source": { "type": "git", "url": "https://github.com/matomo-org/device-detector.git", - "reference": "ebd8a07e4b69088c0e34f29ec72dc162c34c9264" + "reference": "99ea1953fc7f23f785e593ce1499a00586645530" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/ebd8a07e4b69088c0e34f29ec72dc162c34c9264", - "reference": "ebd8a07e4b69088c0e34f29ec72dc162c34c9264", + "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/99ea1953fc7f23f785e593ce1499a00586645530", + "reference": "99ea1953fc7f23f785e593ce1499a00586645530", "shasum": "" }, "require": { @@ -942,7 +942,7 @@ }, "require-dev": { "matthiasmullie/scrapbook": "^1.4.7", - "mayflower/mo4-coding-standard": "dev-master#275cb9d", + "mayflower/mo4-coding-standard": "^v8.0.0", "phpstan/phpstan": "^0.12.52", "phpunit/phpunit": "^8.5.8", "psr/cache": "^1.0.1", @@ -986,7 +986,7 @@ "source": "https://github.com/matomo-org/matomo", "wiki": "https://dev.matomo.org/" }, - "time": "2021-12-07T11:40:16+00:00" + "time": "2022-02-18T19:51:56+00:00" }, { "name": "mongodb/mongodb", @@ -1108,16 +1108,16 @@ }, { "name": "phpmailer/phpmailer", - "version": "v6.5.3", + "version": "v6.6.0", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "baeb7cde6b60b1286912690ab0693c7789a31e71" + "reference": "e43bac82edc26ca04b36143a48bde1c051cfd5b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/baeb7cde6b60b1286912690ab0693c7789a31e71", - "reference": "baeb7cde6b60b1286912690ab0693c7789a31e71", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e43bac82edc26ca04b36143a48bde1c051cfd5b1", + "reference": "e43bac82edc26ca04b36143a48bde1c051cfd5b1", "shasum": "" }, "require": { @@ -1130,10 +1130,10 @@ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "doctrine/annotations": "^1.2", "php-parallel-lint/php-console-highlighter": "^0.5.0", - "php-parallel-lint/php-parallel-lint": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.3.1", "phpcompatibility/php-compatibility": "^9.3.5", "roave/security-advisories": "dev-latest", - "squizlabs/php_codesniffer": "^3.6.0", + "squizlabs/php_codesniffer": "^3.6.2", "yoast/phpunit-polyfills": "^1.0.0" }, "suggest": { @@ -1174,7 +1174,7 @@ "description": "PHPMailer is a full-featured email creation and transfer class for PHP", "support": { "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.3" + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.0" }, "funding": [ { @@ -1182,7 +1182,7 @@ "type": "github" } ], - "time": "2021-11-25T16:34:11+00:00" + "time": "2022-02-28T15:31:21+00:00" }, { "name": "psr/http-client", @@ -3075,7 +3075,7 @@ "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator", - "reference": "3af54e71d0088b72b3223efc511b77e254fb7a1d" + "reference": "111fb88713797c58b4e6875c43b2d3f6bd95d1d2" }, "require": { "ext-curl": "*", @@ -3110,7 +3110,7 @@ } ], "description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms", - "time": "2022-03-01T09:53:31+00:00" + "time": "2022-03-01T12:45:38+00:00" }, { "name": "composer/pcre", @@ -3685,6 +3685,9 @@ "require": { "php": "^7.1 || ^8.0" }, + "replace": { + "myclabs/deep-copy": "self.version" + }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", @@ -6570,5 +6573,5 @@ "platform-overrides": { "php": "8.0" }, - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.1.0" } diff --git a/package-lock.json b/package-lock.json index 159f57d7e..d291ebbba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,10 @@ "version": "0.1.0", "license": "BSD-3-Clause", "dependencies": { - "chart.js": "^3.7.0", + "chart.js": "^3.7.1", "markdown-it": "^12.3.2", "pell": "^1.0.6", - "prismjs": "^1.26.0", + "prismjs": "^1.27.0", "turndown": "^7.1.1" }, "devDependencies": { @@ -549,9 +549,9 @@ } }, "node_modules/chart.js": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.7.0.tgz", - "integrity": "sha512-31gVuqqKp3lDIFmzpKIrBeum4OpZsQjSIAqlOpgjosHDJZlULtvwLEZKtEhIAZc7JMPaHlYMys40Qy9Mf+1AAg==" + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.7.1.tgz", + "integrity": "sha512-8knRegQLFnPQAheZV8MjxIXc5gQEfDFD897BJgv/klO/vtIyFFmgMXrNfgrXpbTr/XbTturxRgxIXx/Y+ASJBA==" }, "node_modules/chokidar": { "version": "2.1.8", @@ -3566,9 +3566,9 @@ } }, "node_modules/prismjs": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.26.0.tgz", - "integrity": "sha512-HUoH9C5Z3jKkl3UunCyiD5jwk0+Hz0fIgQ2nbwU2Oo/ceuTAQAg+pPVnfdt2TJWRVLcxKh9iuoYDUSc8clb5UQ==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", "engines": { "node": ">=6" } @@ -5487,9 +5487,9 @@ "dev": true }, "chart.js": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.7.0.tgz", - "integrity": "sha512-31gVuqqKp3lDIFmzpKIrBeum4OpZsQjSIAqlOpgjosHDJZlULtvwLEZKtEhIAZc7JMPaHlYMys40Qy9Mf+1AAg==" + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.7.1.tgz", + "integrity": "sha512-8knRegQLFnPQAheZV8MjxIXc5gQEfDFD897BJgv/klO/vtIyFFmgMXrNfgrXpbTr/XbTturxRgxIXx/Y+ASJBA==" }, "chokidar": { "version": "2.1.8", @@ -7981,9 +7981,9 @@ "dev": true }, "prismjs": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.26.0.tgz", - "integrity": "sha512-HUoH9C5Z3jKkl3UunCyiD5jwk0+Hz0fIgQ2nbwU2Oo/ceuTAQAg+pPVnfdt2TJWRVLcxKh9iuoYDUSc8clb5UQ==" + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==" }, "process-nextick-args": { "version": "2.0.1", diff --git a/package.json b/package.json index 99e222e49..fc9141c72 100644 --- a/package.json +++ b/package.json @@ -17,10 +17,10 @@ "gulp-less": "^5.0.0" }, "dependencies": { - "chart.js": "^3.7.0", + "chart.js": "^3.7.1", "markdown-it": "^12.3.2", "pell": "^1.0.6", - "prismjs": "^1.26.0", + "prismjs": "^1.27.0", "turndown": "^7.1.1" } } diff --git a/public/dist/scripts/app-all.js b/public/dist/scripts/app-all.js index d033fda75..d90c22dee 100644 --- a/public/dist/scripts/app-all.js +++ b/public/dist/scripts/app-all.js @@ -1543,7 +1543,7 @@ const cacheKey=prefixes.join();let cached=cache.get(cacheKey);if(!cached){const return cached;} const hasFunction=value=>isObject(value)&&Object.getOwnPropertyNames(value).reduce((acc,key)=>acc||isFunction(value[key]),false);function needContext(proxy,names){const{isScriptable,isIndexable}=_descriptors(proxy);for(const prop of names){const scriptable=isScriptable(prop);const indexable=isIndexable(prop);const value=(indexable||scriptable)&&proxy[prop];if((scriptable&&(isFunction(value)||hasFunction(value)))||(indexable&&isArray(value))){return true;}} return false;} -var version="3.7.0";const KNOWN_POSITIONS=['top','bottom','left','right','chartArea'];function positionIsHorizontal(position,axis){return position==='top'||position==='bottom'||(KNOWN_POSITIONS.indexOf(position)===-1&&axis==='x');} +var version="3.7.1";const KNOWN_POSITIONS=['top','bottom','left','right','chartArea'];function positionIsHorizontal(position,axis){return position==='top'||position==='bottom'||(KNOWN_POSITIONS.indexOf(position)===-1&&axis==='x');} function compare2Level(l1,l2){return function(a,b){return a[l1]===b[l1]?a[l2]-b[l2]:a[l1]-b[l1];};} function onAnimationsComplete(context){const chart=context.chart;const animationOptions=chart.options.animation;chart.notifyPlugins('afterRender');callback(animationOptions&&animationOptions.onComplete,[context],chart);} function onAnimationProgress(context){const chart=context.chart;const animationOptions=chart.options.animation;callback(animationOptions&&animationOptions.onProgress,[context],chart);} @@ -1999,7 +1999,9 @@ target=sources[fill];if(!target){return false;} if(target.visible){return fill;} visited.push(fill);fill=target.fill;} return false;} -function _clip(ctx,target,clipY){ctx.beginPath();target.path(ctx);ctx.lineTo(target.last().x,clipY);ctx.lineTo(target.first().x,clipY);ctx.closePath();ctx.clip();} +function _clip(ctx,target,clipY){const{segments,points}=target;let first=true;let lineLoop=false;ctx.beginPath();for(const segment of segments){const{start,end}=segment;const firstPoint=points[start];const lastPoint=points[findSegmentEnd(start,end,points)];if(first){ctx.moveTo(firstPoint.x,firstPoint.y);first=false;}else{ctx.lineTo(firstPoint.x,clipY);ctx.lineTo(firstPoint.x,firstPoint.y);} +lineLoop=!!target.pathSegment(ctx,segment,{move:lineLoop});if(lineLoop){ctx.closePath();}else{ctx.lineTo(lastPoint.x,clipY);}} +ctx.lineTo(target.first().x,clipY);ctx.closePath();ctx.clip();} function getBounds(property,first,last,loop){if(loop){return;} let start=first[property];let end=last[property];if(property==='angle'){start=_normalizeAngle(start);end=_normalizeAngle(end);} return{property,start,end};} @@ -3045,7 +3047,7 @@ rule.replacement(content,node,this.options)+ whitespace.trailing)} function join(output,replacement){var s1=trimTrailingNewlines(output);var s2=trimLeadingNewlines(replacement);var nls=Math.max(output.length-s1.length,replacement.length-s2.length);var separator='\n\n'.substring(0,nls);return s1+separator+s2} function canConvert(input){return(input!=null&&(typeof input==='string'||(input.nodeType&&(input.nodeType===1||input.nodeType===9||input.nodeType===11))))} -return TurndownService;}());var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(u){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,e={},M={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof W?new W(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=l.reach);y+=m.value.length,m=m.next){var k=m.value;if(t.length>n.length)return;if(!(k instanceof W)){var x,b=1;if(h){if(!(x=z(p,y,n,f))||x.index>=n.length)break;var w=x.index,A=x.index+x[0].length,P=y;for(P+=m.value.length;P<=w;)m=m.next,P+=m.value.length;if(P-=m.value.length,y=P,m.value instanceof W)continue;for(var E=m;E!==t.tail&&(Pl.reach&&(l.reach=j);var C=m.prev;S&&(C=I(t,C,S),y+=S.length),q(t,C,b);var N=new W(o,g?M.tokenize(L,g):L,d,L);if(m=I(t,C,N),O&&I(t,m,O),1l.reach&&(l.reach=_.reach)}}}}}}(e,a,n,a.head,0),function(e){var n=[],t=e.head.next;for(;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=M.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=M.hooks.all[e];if(t&&t.length)for(var r,a=0;r=t[a++];)r(n)}},Token:W};function W(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||"").length}function z(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function i(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function I(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function q(e,n,t){for(var r=n.next,a=0;a"+a.content+""},!u.document)return u.addEventListener&&(M.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(M.highlight(r,M.languages[t],t)),a&&u.close()},!1)),M;var r=M.util.currentScript();function a(){M.manual||M.highlightAll()}if(r&&(M.filename=r.src,r.hasAttribute("data-manual")&&(M.manual=!0)),!M.manual){var l=document.readyState;"loading"===l||"interactive"===l&&r&&r.defer?document.addEventListener("DOMContentLoaded",a):window.requestAnimationFrame?window.requestAnimationFrame(a):window.setTimeout(a,16)}return M}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,function(){return a}),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;!function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism);Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript;!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],s=a.variable[1].inside,i=0;i>/g,function(e,n){return"(?:"+s[+n]+")"})}function t(e,n,s){return RegExp(a(e,n),s||"")}function e(e,n){for(var s=0;s>/g,function(){return"(?:"+e+")"});return e.replace(/<>/g,"[^\\s\\S]")}var n="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",r="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",o="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var d=l(r),p=RegExp(l(n+" "+r+" "+i+" "+o)),c=l(r+" "+i+" "+o),u=l(n+" "+r+" "+o),g=e("<(?:[^<>;=+\\-*/%&|^]|<>)*>",2),b=e("\\((?:[^()]|<>)*\\)",2),h="@?\\b[A-Za-z_]\\w*\\b",f=a("<<0>>(?:\\s*<<1>>)?",[h,g]),m=a("(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*",[c,f]),k="\\[\\s*(?:,\\s*)*\\]",y=a("<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?",[m,k]),w=a("(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?",[a("\\(<<0>>+(?:,<<0>>+)+\\)",[a("[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>",[g,b,k])]),m,k]),v={keyword:p,punctuation:/[<>()?,.:[\]]/},x="'(?:[^\r\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'",$='"(?:\\\\.|[^\\\\"\r\n])*"';s.languages.csharp=s.languages.extend("clike",{string:[{pattern:t("(^|[^$\\\\])<<0>>",['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']),lookbehind:!0,greedy:!0},{pattern:t("(^|[^@$\\\\])<<0>>",[$]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:t("(\\busing\\s+static\\s+)<<0>>(?=\\s*;)",[m]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)",[h,w]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+)<<0>>(?=\\s*=)",[h]),lookbehind:!0},{pattern:t("(\\b<<0>>\\s+)<<1>>",[d,f]),lookbehind:!0,inside:v},{pattern:t("(\\bcatch\\s*\\(\\s*)<<0>>",[m]),lookbehind:!0,inside:v},{pattern:t("(\\bwhere\\s+)<<0>>",[h]),lookbehind:!0},{pattern:t("(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>",[y]),lookbehind:!0,inside:v},{pattern:t("\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))",[w,u,h]),inside:v}],keyword:p,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),s.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),s.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:t("([(,]\\s*)<<0>>(?=\\s*:)",[h]),lookbehind:!0,alias:"punctuation"}}),s.languages.insertBefore("csharp","class-name",{namespace:{pattern:t("(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])",[h]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:t("(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))",[b]),lookbehind:!0,alias:"class-name",inside:v},"return-type":{pattern:t("<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))",[w,m]),inside:v,alias:"class-name"},"constructor-invocation":{pattern:t("(\\bnew\\s+)<<0>>(?=\\s*[[({])",[w]),lookbehind:!0,inside:v,alias:"class-name"},"generic-method":{pattern:t("<<0>>\\s*<<1>>(?=\\s*\\()",[h,g]),inside:{function:t("^<<0>>",[h]),generic:{pattern:RegExp(g),alias:"class-name",inside:v}}},"type-list":{pattern:t("\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))",[d,f,h,w,p.source,b,"\\bnew\\s*\\(\\s*\\)"]),lookbehind:!0,inside:{"record-arguments":{pattern:t("(^(?!new\\s*\\()<<0>>\\s*)<<1>>",[f,b]),lookbehind:!0,greedy:!0,inside:s.languages.csharp},keyword:p,"class-name":{pattern:RegExp(w),greedy:!0,inside:v},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var _=$+"|"+x,B=a("/(?![*/])|//[^\r\n]*[\r\n]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>",[_]),E=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),R="\\b(?:assembly|event|field|method|module|param|property|return|type)\\b",z=a("<<0>>(?:\\s*\\(<<1>>*\\))?",[m,E]);s.languages.insertBefore("csharp","class-name",{attribute:{pattern:t("((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])",[R,z]),lookbehind:!0,greedy:!0,inside:{target:{pattern:t("^<<0>>(?=\\s*:)",[R]),alias:"keyword"},"attribute-arguments":{pattern:t("\\(<<0>>*\\)",[E]),inside:s.languages.csharp},"class-name":{pattern:RegExp(m),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var S=":[^}\r\n]+",j=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),A=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[j,S]),F=e(a("[^\"'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<>*\\)",[_]),2),P=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[F,S]);function U(e,n){return{interpolation:{pattern:t("((?:^|[^{])(?:\\{\\{)*)<<0>>",[e]),lookbehind:!0,inside:{"format-string":{pattern:t("(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)",[n,S]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:s.languages.csharp}}},string:/[\s\S]+/}}s.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:t('(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"',[A]),lookbehind:!0,greedy:!0,inside:U(A,j)},{pattern:t('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"',[P]),lookbehind:!0,greedy:!0,inside:U(P,F)}],char:{pattern:RegExp(x),greedy:!0}}),s.languages.dotnet=s.languages.cs=s.languages.csharp}(Prism);!function(e){var a=[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extends|extension|external|factory|final|finally|for|get|hide|if|implements|import|in|interface|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\b/],n="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",s={pattern:RegExp(n+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}}}};e.languages.dart=e.languages.extend("clike",{"class-name":[s,{pattern:RegExp(n+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])"),lookbehind:!0,inside:s.inside}],keyword:a,operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),e.languages.insertBefore("dart","string",{"string-literal":{pattern:/r?(?:("""|''')[\s\S]*?\1|(["'])(?:\\.|(?!\2)[^\\\r\n])*\2(?!\2))/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,lookbehind:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:e.languages.dart}}},string:/[\s\S]+/}},string:void 0}),e.languages.insertBefore("dart","class-name",{metadata:{pattern:/@\w+/,alias:"function"}}),e.languages.insertBefore("dart","class-name",{generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":s,keyword:a,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})}(Prism);Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),Prism.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete Prism.languages.go["class-name"];Prism.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:Prism.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},Prism.hooks.add("after-tokenize",function(n){if("graphql"===n.language)for(var o=n.tokens.filter(function(n){return"string"!=typeof n&&"comment"!==n.type&&"scalar"!==n.type}),s=0;s>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":a,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(//g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism);Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json;!function(n){n.languages.kotlin=n.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete n.languages.kotlin["class-name"];var e={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:n.languages.kotlin}};n.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:e},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:e},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete n.languages.kotlin.string,n.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),n.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),n.languages.kt=n.languages.kotlin,n.languages.kts=n.languages.kotlin}(Prism);!function(h){function v(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(h.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,r,e,o){if(a.language===r){var c=a.tokenStack=[];a.code=a.code.replace(e,function(e){if("function"==typeof o&&!o(e))return e;for(var n,t=c.length;-1!==a.code.indexOf(n=v(r,t));)++t;return c[t]=e,n}),a.grammar=h.languages.markup}}},tokenizePlaceholders:{value:function(p,k){if(p.language===k&&p.tokenStack){p.grammar=h.languages[k];var m=0,d=Object.keys(p.tokenStack);!function e(n){for(var t=0;t=d.length);t++){var a=n[t];if("string"==typeof a||a.content&&"string"==typeof a.content){var r=d[m],o=p.tokenStack[r],c="string"==typeof a?a:a.content,i=v(k,r),u=c.indexOf(i);if(-1|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;a.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:e,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:n,punctuation:s};var l={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:a.languages.php},r=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:l}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:l}}];a.languages.insertBefore("php","variable",{string:r,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:e,string:r,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:i,operator:n,punctuation:s}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),a.hooks.add("before-tokenize",function(e){if(/<\?/.test(e.code)){a.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g)}}),a.hooks.add("after-tokenize",function(e){a.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism);!function(e){var i=Prism.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:null},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:false|true)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(^|\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/};i.string[0].inside={function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:i},boolean:i.boolean,variable:i.variable}}();Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python;!function(e){e.languages.ruby=e.languages.extend("clike",{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===||[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),e.languages.insertBefore("ruby","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}});var n={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"}}};delete e.languages.ruby.function;var t="(?:"+["([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^]|\\((?:[^()\\\\]|\\\\[^])*\\))*\\)","\\{(?:[^{}\\\\]|\\\\[^]|\\{(?:[^{}\\\\]|\\\\[^])*\\})*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^]|\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\])*\\]","<(?:[^<>\\\\]|\\\\[^]|<(?:[^<>\\\\]|\\\\[^])*>)*>"].join("|")+")",i='(?:"(?:\\\\.|[^"\\\\\r\n])*"|(?:\\b[a-zA-Z_]\\w*|[^\\s\0-\\x7F]+)[?!]?|\\$.)';e.languages.insertBefore("ruby","keyword",{"regex-literal":[{pattern:RegExp("%r"+t+"[egimnosux]{0,6}"),greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp("(^|[^:]):"+i),lookbehind:!0,greedy:!0},{pattern:RegExp("([\r\n{(,][ \t]*)"+i+"(?=:(?!:))"),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),e.languages.insertBefore("ruby","string",{"string-literal":[{pattern:RegExp("%[qQiIwWs]?"+t),greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp("%x"+t),greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}}]}),delete e.languages.ruby.string,e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),e.languages.rb=e.languages.ruby}(Prism);Prism.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp('(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^(])|[^\\\\\r\n"])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp('(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^#])|[^\\\\\r\n])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp("#(?:(?:elseif|if)\\b(?:[ \t]*(?:![ \t]*)?(?:\\b\\w+\\b(?:[ \t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \t]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},Prism.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=Prism.languages.swift});!function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var s=e.languages.extend("typescript",{});delete s["class-name"],e.languages.typescript["class-name"].inside=s,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:s}}}}),e.languages.ts=e.languages.typescript}(Prism);!function(e){var n=/[*&][^\s[\]{},]+/,r=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,t="(?:"+r.source+"(?:[ \t]+"+n.source+")?|"+n.source+"(?:[ \t]+"+r.source+")?)",a="(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*".replace(//g,function(){return"[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]"}),d="\"(?:[^\"\\\\\r\n]|\\\\.)*\"|'(?:[^'\\\\\r\n]|\\\\.)*'";function o(e,n){n=(n||"").replace(/m/g,"")+"m";var r="([:\\-,[{]\\s*(?:\\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\\]|\\}|(?:[\r\n]\\s*)?#))".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return e});return RegExp(r,n)}e.languages.yaml={scalar:{pattern:RegExp("([\\-:]\\s*(?:\\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\\S[^\r\n]*(?:\\2[^\r\n]+)*)".replace(/<>/g,function(){return t})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp("((?:^|[:\\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\\s*:\\s)".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return"(?:"+a+"|"+d+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:o("\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?"),lookbehind:!0,alias:"number"},boolean:{pattern:o("false|true","i"),lookbehind:!0,alias:"important"},null:{pattern:o("null|~","i"),lookbehind:!0,alias:"important"},string:{pattern:o(d),lookbehind:!0,greedy:!0},number:{pattern:o("[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)","i"),lookbehind:!0},tag:r,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(Prism);!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var o="line-numbers",a=/\n(?!$)/g,e=Prism.plugins.lineNumbers={getLine:function(e,n){if("PRE"===e.tagName&&e.classList.contains(o)){var t=e.querySelector(".line-numbers-rows");if(t){var i=parseInt(e.getAttribute("data-start"),10)||1,r=i+(t.children.length-1);n");(i=document.createElement("span")).setAttribute("aria-hidden","true"),i.className="line-numbers-rows",i.innerHTML=l,t.hasAttribute("data-start")&&(t.style.counterReset="linenumber "+(parseInt(t.getAttribute("data-start"),10)-1)),e.element.appendChild(i),u([t]),Prism.hooks.run("line-numbers",e)}}}),Prism.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0})}function u(e){if(0!=(e=e.filter(function(e){var n=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null}(e)["white-space"];return"pre-wrap"===n||"pre-line"===n})).length){var n=e.map(function(e){var n=e.querySelector("code"),t=e.querySelector(".line-numbers-rows");if(n&&t){var i=e.querySelector(".line-numbers-sizer"),r=n.textContent.split(a);i||((i=document.createElement("span")).className="line-numbers-sizer",n.appendChild(i)),i.innerHTML="0",i.style.display="block";var s=i.getBoundingClientRect().height;return i.innerHTML="",{element:e,lines:r,lineHeights:[],oneLinerHeight:s,sizer:i}}}).filter(Boolean);n.forEach(function(e){var i=e.sizer,n=e.lines,r=e.lineHeights,s=e.oneLinerHeight;r[n.length-1]=void 0,n.forEach(function(e,n){if(e&&1=l.reach);y+=m.value.length,m=m.next){var k=m.value;if(t.length>n.length)return;if(!(k instanceof W)){var x,b=1;if(h){if(!(x=z(p,y,n,f))||x.index>=n.length)break;var w=x.index,A=x.index+x[0].length,E=y;for(E+=m.value.length;E<=w;)m=m.next,E+=m.value.length;if(E-=m.value.length,y=E,m.value instanceof W)continue;for(var P=m;P!==t.tail&&(El.reach&&(l.reach=j);var C=m.prev;S&&(C=I(t,C,S),y+=S.length),T(t,C,b);var N=new W(o,g?M.tokenize(L,g):L,d,L);if(m=I(t,C,N),O&&I(t,m,O),1l.reach&&(l.reach=_.reach)}}}}}}(e,a,n,a.head,0),function(e){var n=[],t=e.head.next;for(;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=M.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=M.hooks.all[e];if(t&&t.length)for(var r,a=0;r=t[a++];)r(n)}},Token:W};function W(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||"").length}function z(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function i(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function I(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function T(e,n,t){for(var r=n.next,a=0;a"+a.content+""},!u.document)return u.addEventListener&&(M.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(M.highlight(r,M.languages[t],t)),a&&u.close()},!1)),M;var r=M.util.currentScript();function a(){M.manual||M.highlightAll()}if(r&&(M.filename=r.src,r.hasAttribute("data-manual")&&(M.manual=!0)),!M.manual){var l=document.readyState;"loading"===l||"interactive"===l&&r&&r.defer?document.addEventListener("DOMContentLoaded",a):window.requestAnimationFrame?window.requestAnimationFrame(a):window.setTimeout(a,16)}return M}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,function(){return a}),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;!function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism);Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript;!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],s=a.variable[1].inside,i=0;i>/g,function(e,n){return"(?:"+s[+n]+")"})}function t(e,n,s){return RegExp(a(e,n),s||"")}function e(e,n){for(var s=0;s>/g,function(){return"(?:"+e+")"});return e.replace(/<>/g,"[^\\s\\S]")}var n="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",r="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",o="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var d=l(r),p=RegExp(l(n+" "+r+" "+i+" "+o)),c=l(r+" "+i+" "+o),u=l(n+" "+r+" "+o),g=e("<(?:[^<>;=+\\-*/%&|^]|<>)*>",2),b=e("\\((?:[^()]|<>)*\\)",2),h="@?\\b[A-Za-z_]\\w*\\b",f=a("<<0>>(?:\\s*<<1>>)?",[h,g]),m=a("(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*",[c,f]),k="\\[\\s*(?:,\\s*)*\\]",y=a("<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?",[m,k]),w=a("(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?",[a("\\(<<0>>+(?:,<<0>>+)+\\)",[a("[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>",[g,b,k])]),m,k]),v={keyword:p,punctuation:/[<>()?,.:[\]]/},x="'(?:[^\r\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'",$='"(?:\\\\.|[^\\\\"\r\n])*"';s.languages.csharp=s.languages.extend("clike",{string:[{pattern:t("(^|[^$\\\\])<<0>>",['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']),lookbehind:!0,greedy:!0},{pattern:t("(^|[^@$\\\\])<<0>>",[$]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:t("(\\busing\\s+static\\s+)<<0>>(?=\\s*;)",[m]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)",[h,w]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+)<<0>>(?=\\s*=)",[h]),lookbehind:!0},{pattern:t("(\\b<<0>>\\s+)<<1>>",[d,f]),lookbehind:!0,inside:v},{pattern:t("(\\bcatch\\s*\\(\\s*)<<0>>",[m]),lookbehind:!0,inside:v},{pattern:t("(\\bwhere\\s+)<<0>>",[h]),lookbehind:!0},{pattern:t("(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>",[y]),lookbehind:!0,inside:v},{pattern:t("\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))",[w,u,h]),inside:v}],keyword:p,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),s.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),s.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:t("([(,]\\s*)<<0>>(?=\\s*:)",[h]),lookbehind:!0,alias:"punctuation"}}),s.languages.insertBefore("csharp","class-name",{namespace:{pattern:t("(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])",[h]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:t("(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))",[b]),lookbehind:!0,alias:"class-name",inside:v},"return-type":{pattern:t("<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))",[w,m]),inside:v,alias:"class-name"},"constructor-invocation":{pattern:t("(\\bnew\\s+)<<0>>(?=\\s*[[({])",[w]),lookbehind:!0,inside:v,alias:"class-name"},"generic-method":{pattern:t("<<0>>\\s*<<1>>(?=\\s*\\()",[h,g]),inside:{function:t("^<<0>>",[h]),generic:{pattern:RegExp(g),alias:"class-name",inside:v}}},"type-list":{pattern:t("\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))",[d,f,h,w,p.source,b,"\\bnew\\s*\\(\\s*\\)"]),lookbehind:!0,inside:{"record-arguments":{pattern:t("(^(?!new\\s*\\()<<0>>\\s*)<<1>>",[f,b]),lookbehind:!0,greedy:!0,inside:s.languages.csharp},keyword:p,"class-name":{pattern:RegExp(w),greedy:!0,inside:v},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var _=$+"|"+x,B=a("/(?![*/])|//[^\r\n]*[\r\n]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>",[_]),E=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),R="\\b(?:assembly|event|field|method|module|param|property|return|type)\\b",z=a("<<0>>(?:\\s*\\(<<1>>*\\))?",[m,E]);s.languages.insertBefore("csharp","class-name",{attribute:{pattern:t("((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])",[R,z]),lookbehind:!0,greedy:!0,inside:{target:{pattern:t("^<<0>>(?=\\s*:)",[R]),alias:"keyword"},"attribute-arguments":{pattern:t("\\(<<0>>*\\)",[E]),inside:s.languages.csharp},"class-name":{pattern:RegExp(m),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var S=":[^}\r\n]+",j=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),A=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[j,S]),F=e(a("[^\"'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<>*\\)",[_]),2),P=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[F,S]);function U(e,n){return{interpolation:{pattern:t("((?:^|[^{])(?:\\{\\{)*)<<0>>",[e]),lookbehind:!0,inside:{"format-string":{pattern:t("(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)",[n,S]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:s.languages.csharp}}},string:/[\s\S]+/}}s.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:t('(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"',[A]),lookbehind:!0,greedy:!0,inside:U(A,j)},{pattern:t('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"',[P]),lookbehind:!0,greedy:!0,inside:U(P,F)}],char:{pattern:RegExp(x),greedy:!0}}),s.languages.dotnet=s.languages.cs=s.languages.csharp}(Prism);!function(e){var a=[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extends|extension|external|factory|final|finally|for|get|hide|if|implements|import|in|interface|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\b/],n="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",s={pattern:RegExp(n+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}}}};e.languages.dart=e.languages.extend("clike",{"class-name":[s,{pattern:RegExp(n+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])"),lookbehind:!0,inside:s.inside}],keyword:a,operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),e.languages.insertBefore("dart","string",{"string-literal":{pattern:/r?(?:("""|''')[\s\S]*?\1|(["'])(?:\\.|(?!\2)[^\\\r\n])*\2(?!\2))/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,lookbehind:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:e.languages.dart}}},string:/[\s\S]+/}},string:void 0}),e.languages.insertBefore("dart","class-name",{metadata:{pattern:/@\w+/,alias:"function"}}),e.languages.insertBefore("dart","class-name",{generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":s,keyword:a,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})}(Prism);Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),Prism.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete Prism.languages.go["class-name"];Prism.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:Prism.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},Prism.hooks.add("after-tokenize",function(n){if("graphql"===n.language)for(var o=n.tokens.filter(function(n){return"string"!=typeof n&&"comment"!==n.type&&"scalar"!==n.type}),s=0;s>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":a,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(//g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism);Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json;!function(n){n.languages.kotlin=n.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete n.languages.kotlin["class-name"];var e={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:n.languages.kotlin}};n.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:e},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:e},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete n.languages.kotlin.string,n.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),n.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),n.languages.kt=n.languages.kotlin,n.languages.kts=n.languages.kotlin}(Prism);!function(h){function v(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(h.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,r,e,o){if(a.language===r){var c=a.tokenStack=[];a.code=a.code.replace(e,function(e){if("function"==typeof o&&!o(e))return e;for(var n,t=c.length;-1!==a.code.indexOf(n=v(r,t));)++t;return c[t]=e,n}),a.grammar=h.languages.markup}}},tokenizePlaceholders:{value:function(p,k){if(p.language===k&&p.tokenStack){p.grammar=h.languages[k];var m=0,d=Object.keys(p.tokenStack);!function e(n){for(var t=0;t=d.length);t++){var a=n[t];if("string"==typeof a||a.content&&"string"==typeof a.content){var r=d[m],o=p.tokenStack[r],c="string"==typeof a?a:a.content,i=v(k,r),u=c.indexOf(i);if(-1|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;a.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:e,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:n,punctuation:s};var l={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:a.languages.php},r=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:l}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:l}}];a.languages.insertBefore("php","variable",{string:r,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:e,string:r,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:i,operator:n,punctuation:s}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),a.hooks.add("before-tokenize",function(e){if(/<\?/.test(e.code)){a.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g)}}),a.hooks.add("after-tokenize",function(e){a.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism);!function(e){var i=Prism.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:null},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:false|true)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(^|\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/};i.string[0].inside={function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:i},boolean:i.boolean,variable:i.variable}}();Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python;!function(e){e.languages.ruby=e.languages.extend("clike",{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===||[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),e.languages.insertBefore("ruby","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}});var n={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"}}};delete e.languages.ruby.function;var t="(?:"+["([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^]|\\((?:[^()\\\\]|\\\\[^])*\\))*\\)","\\{(?:[^{}\\\\]|\\\\[^]|\\{(?:[^{}\\\\]|\\\\[^])*\\})*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^]|\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\])*\\]","<(?:[^<>\\\\]|\\\\[^]|<(?:[^<>\\\\]|\\\\[^])*>)*>"].join("|")+")",i='(?:"(?:\\\\.|[^"\\\\\r\n])*"|(?:\\b[a-zA-Z_]\\w*|[^\\s\0-\\x7F]+)[?!]?|\\$.)';e.languages.insertBefore("ruby","keyword",{"regex-literal":[{pattern:RegExp("%r"+t+"[egimnosux]{0,6}"),greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp("(^|[^:]):"+i),lookbehind:!0,greedy:!0},{pattern:RegExp("([\r\n{(,][ \t]*)"+i+"(?=:(?!:))"),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),e.languages.insertBefore("ruby","string",{"string-literal":[{pattern:RegExp("%[qQiIwWs]?"+t),greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp("%x"+t),greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}}]}),delete e.languages.ruby.string,e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),e.languages.rb=e.languages.ruby}(Prism);Prism.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp('(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^(])|[^\\\\\r\n"])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp('(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^#])|[^\\\\\r\n])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp("#(?:(?:elseif|if)\\b(?:[ \t]*(?:![ \t]*)?(?:\\b\\w+\\b(?:[ \t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \t]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},Prism.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=Prism.languages.swift});!function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var s=e.languages.extend("typescript",{});delete s["class-name"],e.languages.typescript["class-name"].inside=s,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:s}}}}),e.languages.ts=e.languages.typescript}(Prism);!function(e){var n=/[*&][^\s[\]{},]+/,r=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,t="(?:"+r.source+"(?:[ \t]+"+n.source+")?|"+n.source+"(?:[ \t]+"+r.source+")?)",a="(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*".replace(//g,function(){return"[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]"}),d="\"(?:[^\"\\\\\r\n]|\\\\.)*\"|'(?:[^'\\\\\r\n]|\\\\.)*'";function o(e,n){n=(n||"").replace(/m/g,"")+"m";var r="([:\\-,[{]\\s*(?:\\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\\]|\\}|(?:[\r\n]\\s*)?#))".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return e});return RegExp(r,n)}e.languages.yaml={scalar:{pattern:RegExp("([\\-:]\\s*(?:\\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\\S[^\r\n]*(?:\\2[^\r\n]+)*)".replace(/<>/g,function(){return t})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp("((?:^|[:\\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\\s*:\\s)".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return"(?:"+a+"|"+d+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:o("\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?"),lookbehind:!0,alias:"number"},boolean:{pattern:o("false|true","i"),lookbehind:!0,alias:"important"},null:{pattern:o("null|~","i"),lookbehind:!0,alias:"important"},string:{pattern:o(d),lookbehind:!0,greedy:!0},number:{pattern:o("[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)","i"),lookbehind:!0},tag:r,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(Prism);!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var o="line-numbers",a=/\n(?!$)/g,e=Prism.plugins.lineNumbers={getLine:function(e,n){if("PRE"===e.tagName&&e.classList.contains(o)){var t=e.querySelector(".line-numbers-rows");if(t){var i=parseInt(e.getAttribute("data-start"),10)||1,r=i+(t.children.length-1);n");(i=document.createElement("span")).setAttribute("aria-hidden","true"),i.className="line-numbers-rows",i.innerHTML=l,t.hasAttribute("data-start")&&(t.style.counterReset="linenumber "+(parseInt(t.getAttribute("data-start"),10)-1)),e.element.appendChild(i),u([t]),Prism.hooks.run("line-numbers",e)}}}),Prism.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0})}function u(e){if(0!=(e=e.filter(function(e){var n=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null}(e)["white-space"];return"pre-wrap"===n||"pre-line"===n})).length){var n=e.map(function(e){var n=e.querySelector("code"),t=e.querySelector(".line-numbers-rows");if(n&&t){var i=e.querySelector(".line-numbers-sizer"),r=n.textContent.split(a);i||((i=document.createElement("span")).className="line-numbers-sizer",n.appendChild(i)),i.innerHTML="0",i.style.display="block";var s=i.getBoundingClientRect().height;return i.innerHTML="",{element:e,lines:r,lineHeights:[],oneLinerHeight:s,sizer:i}}}).filter(Boolean);n.forEach(function(e){var i=e.sizer,n=e.lines,r=e.lineHeights,s=e.oneLinerHeight;r[n.length-1]=void 0,n.forEach(function(e,n){if(e&&1isObject(value)&&Object.getOwnPropertyNames(value).reduce((acc,key)=>acc||isFunction(value[key]),false);function needContext(proxy,names){const{isScriptable,isIndexable}=_descriptors(proxy);for(const prop of names){const scriptable=isScriptable(prop);const indexable=isIndexable(prop);const value=(indexable||scriptable)&&proxy[prop];if((scriptable&&(isFunction(value)||hasFunction(value)))||(indexable&&isArray(value))){return true;}} return false;} -var version="3.7.0";const KNOWN_POSITIONS=['top','bottom','left','right','chartArea'];function positionIsHorizontal(position,axis){return position==='top'||position==='bottom'||(KNOWN_POSITIONS.indexOf(position)===-1&&axis==='x');} +var version="3.7.1";const KNOWN_POSITIONS=['top','bottom','left','right','chartArea'];function positionIsHorizontal(position,axis){return position==='top'||position==='bottom'||(KNOWN_POSITIONS.indexOf(position)===-1&&axis==='x');} function compare2Level(l1,l2){return function(a,b){return a[l1]===b[l1]?a[l2]-b[l2]:a[l1]-b[l1];};} function onAnimationsComplete(context){const chart=context.chart;const animationOptions=chart.options.animation;chart.notifyPlugins('afterRender');callback(animationOptions&&animationOptions.onComplete,[context],chart);} function onAnimationProgress(context){const chart=context.chart;const animationOptions=chart.options.animation;callback(animationOptions&&animationOptions.onProgress,[context],chart);} @@ -1999,7 +1999,9 @@ target=sources[fill];if(!target){return false;} if(target.visible){return fill;} visited.push(fill);fill=target.fill;} return false;} -function _clip(ctx,target,clipY){ctx.beginPath();target.path(ctx);ctx.lineTo(target.last().x,clipY);ctx.lineTo(target.first().x,clipY);ctx.closePath();ctx.clip();} +function _clip(ctx,target,clipY){const{segments,points}=target;let first=true;let lineLoop=false;ctx.beginPath();for(const segment of segments){const{start,end}=segment;const firstPoint=points[start];const lastPoint=points[findSegmentEnd(start,end,points)];if(first){ctx.moveTo(firstPoint.x,firstPoint.y);first=false;}else{ctx.lineTo(firstPoint.x,clipY);ctx.lineTo(firstPoint.x,firstPoint.y);} +lineLoop=!!target.pathSegment(ctx,segment,{move:lineLoop});if(lineLoop){ctx.closePath();}else{ctx.lineTo(lastPoint.x,clipY);}} +ctx.lineTo(target.first().x,clipY);ctx.closePath();ctx.clip();} function getBounds(property,first,last,loop){if(loop){return;} let start=first[property];let end=last[property];if(property==='angle'){start=_normalizeAngle(start);end=_normalizeAngle(end);} return{property,start,end};} @@ -3045,4 +3047,4 @@ rule.replacement(content,node,this.options)+ whitespace.trailing)} function join(output,replacement){var s1=trimTrailingNewlines(output);var s2=trimLeadingNewlines(replacement);var nls=Math.max(output.length-s1.length,replacement.length-s2.length);var separator='\n\n'.substring(0,nls);return s1+separator+s2} function canConvert(input){return(input!=null&&(typeof input==='string'||(input.nodeType&&(input.nodeType===1||input.nodeType===9||input.nodeType===11))))} -return TurndownService;}());var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(u){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,e={},M={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof W?new W(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=l.reach);y+=m.value.length,m=m.next){var k=m.value;if(t.length>n.length)return;if(!(k instanceof W)){var x,b=1;if(h){if(!(x=z(p,y,n,f))||x.index>=n.length)break;var w=x.index,A=x.index+x[0].length,P=y;for(P+=m.value.length;P<=w;)m=m.next,P+=m.value.length;if(P-=m.value.length,y=P,m.value instanceof W)continue;for(var E=m;E!==t.tail&&(Pl.reach&&(l.reach=j);var C=m.prev;S&&(C=I(t,C,S),y+=S.length),q(t,C,b);var N=new W(o,g?M.tokenize(L,g):L,d,L);if(m=I(t,C,N),O&&I(t,m,O),1l.reach&&(l.reach=_.reach)}}}}}}(e,a,n,a.head,0),function(e){var n=[],t=e.head.next;for(;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=M.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=M.hooks.all[e];if(t&&t.length)for(var r,a=0;r=t[a++];)r(n)}},Token:W};function W(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||"").length}function z(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function i(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function I(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function q(e,n,t){for(var r=n.next,a=0;a"+a.content+""},!u.document)return u.addEventListener&&(M.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(M.highlight(r,M.languages[t],t)),a&&u.close()},!1)),M;var r=M.util.currentScript();function a(){M.manual||M.highlightAll()}if(r&&(M.filename=r.src,r.hasAttribute("data-manual")&&(M.manual=!0)),!M.manual){var l=document.readyState;"loading"===l||"interactive"===l&&r&&r.defer?document.addEventListener("DOMContentLoaded",a):window.requestAnimationFrame?window.requestAnimationFrame(a):window.setTimeout(a,16)}return M}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,function(){return a}),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;!function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism);Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript;!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],s=a.variable[1].inside,i=0;i>/g,function(e,n){return"(?:"+s[+n]+")"})}function t(e,n,s){return RegExp(a(e,n),s||"")}function e(e,n){for(var s=0;s>/g,function(){return"(?:"+e+")"});return e.replace(/<>/g,"[^\\s\\S]")}var n="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",r="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",o="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var d=l(r),p=RegExp(l(n+" "+r+" "+i+" "+o)),c=l(r+" "+i+" "+o),u=l(n+" "+r+" "+o),g=e("<(?:[^<>;=+\\-*/%&|^]|<>)*>",2),b=e("\\((?:[^()]|<>)*\\)",2),h="@?\\b[A-Za-z_]\\w*\\b",f=a("<<0>>(?:\\s*<<1>>)?",[h,g]),m=a("(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*",[c,f]),k="\\[\\s*(?:,\\s*)*\\]",y=a("<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?",[m,k]),w=a("(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?",[a("\\(<<0>>+(?:,<<0>>+)+\\)",[a("[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>",[g,b,k])]),m,k]),v={keyword:p,punctuation:/[<>()?,.:[\]]/},x="'(?:[^\r\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'",$='"(?:\\\\.|[^\\\\"\r\n])*"';s.languages.csharp=s.languages.extend("clike",{string:[{pattern:t("(^|[^$\\\\])<<0>>",['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']),lookbehind:!0,greedy:!0},{pattern:t("(^|[^@$\\\\])<<0>>",[$]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:t("(\\busing\\s+static\\s+)<<0>>(?=\\s*;)",[m]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)",[h,w]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+)<<0>>(?=\\s*=)",[h]),lookbehind:!0},{pattern:t("(\\b<<0>>\\s+)<<1>>",[d,f]),lookbehind:!0,inside:v},{pattern:t("(\\bcatch\\s*\\(\\s*)<<0>>",[m]),lookbehind:!0,inside:v},{pattern:t("(\\bwhere\\s+)<<0>>",[h]),lookbehind:!0},{pattern:t("(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>",[y]),lookbehind:!0,inside:v},{pattern:t("\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))",[w,u,h]),inside:v}],keyword:p,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),s.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),s.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:t("([(,]\\s*)<<0>>(?=\\s*:)",[h]),lookbehind:!0,alias:"punctuation"}}),s.languages.insertBefore("csharp","class-name",{namespace:{pattern:t("(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])",[h]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:t("(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))",[b]),lookbehind:!0,alias:"class-name",inside:v},"return-type":{pattern:t("<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))",[w,m]),inside:v,alias:"class-name"},"constructor-invocation":{pattern:t("(\\bnew\\s+)<<0>>(?=\\s*[[({])",[w]),lookbehind:!0,inside:v,alias:"class-name"},"generic-method":{pattern:t("<<0>>\\s*<<1>>(?=\\s*\\()",[h,g]),inside:{function:t("^<<0>>",[h]),generic:{pattern:RegExp(g),alias:"class-name",inside:v}}},"type-list":{pattern:t("\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))",[d,f,h,w,p.source,b,"\\bnew\\s*\\(\\s*\\)"]),lookbehind:!0,inside:{"record-arguments":{pattern:t("(^(?!new\\s*\\()<<0>>\\s*)<<1>>",[f,b]),lookbehind:!0,greedy:!0,inside:s.languages.csharp},keyword:p,"class-name":{pattern:RegExp(w),greedy:!0,inside:v},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var _=$+"|"+x,B=a("/(?![*/])|//[^\r\n]*[\r\n]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>",[_]),E=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),R="\\b(?:assembly|event|field|method|module|param|property|return|type)\\b",z=a("<<0>>(?:\\s*\\(<<1>>*\\))?",[m,E]);s.languages.insertBefore("csharp","class-name",{attribute:{pattern:t("((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])",[R,z]),lookbehind:!0,greedy:!0,inside:{target:{pattern:t("^<<0>>(?=\\s*:)",[R]),alias:"keyword"},"attribute-arguments":{pattern:t("\\(<<0>>*\\)",[E]),inside:s.languages.csharp},"class-name":{pattern:RegExp(m),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var S=":[^}\r\n]+",j=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),A=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[j,S]),F=e(a("[^\"'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<>*\\)",[_]),2),P=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[F,S]);function U(e,n){return{interpolation:{pattern:t("((?:^|[^{])(?:\\{\\{)*)<<0>>",[e]),lookbehind:!0,inside:{"format-string":{pattern:t("(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)",[n,S]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:s.languages.csharp}}},string:/[\s\S]+/}}s.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:t('(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"',[A]),lookbehind:!0,greedy:!0,inside:U(A,j)},{pattern:t('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"',[P]),lookbehind:!0,greedy:!0,inside:U(P,F)}],char:{pattern:RegExp(x),greedy:!0}}),s.languages.dotnet=s.languages.cs=s.languages.csharp}(Prism);!function(e){var a=[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extends|extension|external|factory|final|finally|for|get|hide|if|implements|import|in|interface|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\b/],n="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",s={pattern:RegExp(n+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}}}};e.languages.dart=e.languages.extend("clike",{"class-name":[s,{pattern:RegExp(n+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])"),lookbehind:!0,inside:s.inside}],keyword:a,operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),e.languages.insertBefore("dart","string",{"string-literal":{pattern:/r?(?:("""|''')[\s\S]*?\1|(["'])(?:\\.|(?!\2)[^\\\r\n])*\2(?!\2))/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,lookbehind:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:e.languages.dart}}},string:/[\s\S]+/}},string:void 0}),e.languages.insertBefore("dart","class-name",{metadata:{pattern:/@\w+/,alias:"function"}}),e.languages.insertBefore("dart","class-name",{generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":s,keyword:a,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})}(Prism);Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),Prism.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete Prism.languages.go["class-name"];Prism.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:Prism.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},Prism.hooks.add("after-tokenize",function(n){if("graphql"===n.language)for(var o=n.tokens.filter(function(n){return"string"!=typeof n&&"comment"!==n.type&&"scalar"!==n.type}),s=0;s>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":a,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(//g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism);Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json;!function(n){n.languages.kotlin=n.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete n.languages.kotlin["class-name"];var e={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:n.languages.kotlin}};n.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:e},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:e},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete n.languages.kotlin.string,n.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),n.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),n.languages.kt=n.languages.kotlin,n.languages.kts=n.languages.kotlin}(Prism);!function(h){function v(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(h.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,r,e,o){if(a.language===r){var c=a.tokenStack=[];a.code=a.code.replace(e,function(e){if("function"==typeof o&&!o(e))return e;for(var n,t=c.length;-1!==a.code.indexOf(n=v(r,t));)++t;return c[t]=e,n}),a.grammar=h.languages.markup}}},tokenizePlaceholders:{value:function(p,k){if(p.language===k&&p.tokenStack){p.grammar=h.languages[k];var m=0,d=Object.keys(p.tokenStack);!function e(n){for(var t=0;t=d.length);t++){var a=n[t];if("string"==typeof a||a.content&&"string"==typeof a.content){var r=d[m],o=p.tokenStack[r],c="string"==typeof a?a:a.content,i=v(k,r),u=c.indexOf(i);if(-1|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;a.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:e,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:n,punctuation:s};var l={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:a.languages.php},r=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:l}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:l}}];a.languages.insertBefore("php","variable",{string:r,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:e,string:r,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:i,operator:n,punctuation:s}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),a.hooks.add("before-tokenize",function(e){if(/<\?/.test(e.code)){a.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g)}}),a.hooks.add("after-tokenize",function(e){a.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism);!function(e){var i=Prism.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:null},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:false|true)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(^|\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/};i.string[0].inside={function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:i},boolean:i.boolean,variable:i.variable}}();Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python;!function(e){e.languages.ruby=e.languages.extend("clike",{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===||[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),e.languages.insertBefore("ruby","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}});var n={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"}}};delete e.languages.ruby.function;var t="(?:"+["([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^]|\\((?:[^()\\\\]|\\\\[^])*\\))*\\)","\\{(?:[^{}\\\\]|\\\\[^]|\\{(?:[^{}\\\\]|\\\\[^])*\\})*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^]|\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\])*\\]","<(?:[^<>\\\\]|\\\\[^]|<(?:[^<>\\\\]|\\\\[^])*>)*>"].join("|")+")",i='(?:"(?:\\\\.|[^"\\\\\r\n])*"|(?:\\b[a-zA-Z_]\\w*|[^\\s\0-\\x7F]+)[?!]?|\\$.)';e.languages.insertBefore("ruby","keyword",{"regex-literal":[{pattern:RegExp("%r"+t+"[egimnosux]{0,6}"),greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp("(^|[^:]):"+i),lookbehind:!0,greedy:!0},{pattern:RegExp("([\r\n{(,][ \t]*)"+i+"(?=:(?!:))"),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),e.languages.insertBefore("ruby","string",{"string-literal":[{pattern:RegExp("%[qQiIwWs]?"+t),greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp("%x"+t),greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}}]}),delete e.languages.ruby.string,e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),e.languages.rb=e.languages.ruby}(Prism);Prism.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp('(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^(])|[^\\\\\r\n"])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp('(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^#])|[^\\\\\r\n])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp("#(?:(?:elseif|if)\\b(?:[ \t]*(?:![ \t]*)?(?:\\b\\w+\\b(?:[ \t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \t]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},Prism.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=Prism.languages.swift});!function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var s=e.languages.extend("typescript",{});delete s["class-name"],e.languages.typescript["class-name"].inside=s,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:s}}}}),e.languages.ts=e.languages.typescript}(Prism);!function(e){var n=/[*&][^\s[\]{},]+/,r=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,t="(?:"+r.source+"(?:[ \t]+"+n.source+")?|"+n.source+"(?:[ \t]+"+r.source+")?)",a="(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*".replace(//g,function(){return"[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]"}),d="\"(?:[^\"\\\\\r\n]|\\\\.)*\"|'(?:[^'\\\\\r\n]|\\\\.)*'";function o(e,n){n=(n||"").replace(/m/g,"")+"m";var r="([:\\-,[{]\\s*(?:\\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\\]|\\}|(?:[\r\n]\\s*)?#))".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return e});return RegExp(r,n)}e.languages.yaml={scalar:{pattern:RegExp("([\\-:]\\s*(?:\\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\\S[^\r\n]*(?:\\2[^\r\n]+)*)".replace(/<>/g,function(){return t})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp("((?:^|[:\\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\\s*:\\s)".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return"(?:"+a+"|"+d+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:o("\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?"),lookbehind:!0,alias:"number"},boolean:{pattern:o("false|true","i"),lookbehind:!0,alias:"important"},null:{pattern:o("null|~","i"),lookbehind:!0,alias:"important"},string:{pattern:o(d),lookbehind:!0,greedy:!0},number:{pattern:o("[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)","i"),lookbehind:!0},tag:r,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(Prism);!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var o="line-numbers",a=/\n(?!$)/g,e=Prism.plugins.lineNumbers={getLine:function(e,n){if("PRE"===e.tagName&&e.classList.contains(o)){var t=e.querySelector(".line-numbers-rows");if(t){var i=parseInt(e.getAttribute("data-start"),10)||1,r=i+(t.children.length-1);n");(i=document.createElement("span")).setAttribute("aria-hidden","true"),i.className="line-numbers-rows",i.innerHTML=l,t.hasAttribute("data-start")&&(t.style.counterReset="linenumber "+(parseInt(t.getAttribute("data-start"),10)-1)),e.element.appendChild(i),u([t]),Prism.hooks.run("line-numbers",e)}}}),Prism.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0})}function u(e){if(0!=(e=e.filter(function(e){var n=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null}(e)["white-space"];return"pre-wrap"===n||"pre-line"===n})).length){var n=e.map(function(e){var n=e.querySelector("code"),t=e.querySelector(".line-numbers-rows");if(n&&t){var i=e.querySelector(".line-numbers-sizer"),r=n.textContent.split(a);i||((i=document.createElement("span")).className="line-numbers-sizer",n.appendChild(i)),i.innerHTML="0",i.style.display="block";var s=i.getBoundingClientRect().height;return i.innerHTML="",{element:e,lines:r,lineHeights:[],oneLinerHeight:s,sizer:i}}}).filter(Boolean);n.forEach(function(e){var i=e.sizer,n=e.lines,r=e.lineHeights,s=e.oneLinerHeight;r[n.length-1]=void 0,n.forEach(function(e,n){if(e&&1=l.reach);y+=m.value.length,m=m.next){var k=m.value;if(t.length>n.length)return;if(!(k instanceof W)){var x,b=1;if(h){if(!(x=z(p,y,n,f))||x.index>=n.length)break;var w=x.index,A=x.index+x[0].length,E=y;for(E+=m.value.length;E<=w;)m=m.next,E+=m.value.length;if(E-=m.value.length,y=E,m.value instanceof W)continue;for(var P=m;P!==t.tail&&(El.reach&&(l.reach=j);var C=m.prev;S&&(C=I(t,C,S),y+=S.length),T(t,C,b);var N=new W(o,g?M.tokenize(L,g):L,d,L);if(m=I(t,C,N),O&&I(t,m,O),1l.reach&&(l.reach=_.reach)}}}}}}(e,a,n,a.head,0),function(e){var n=[],t=e.head.next;for(;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=M.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=M.hooks.all[e];if(t&&t.length)for(var r,a=0;r=t[a++];)r(n)}},Token:W};function W(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||"").length}function z(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function i(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function I(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function T(e,n,t){for(var r=n.next,a=0;a"+a.content+""},!u.document)return u.addEventListener&&(M.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(M.highlight(r,M.languages[t],t)),a&&u.close()},!1)),M;var r=M.util.currentScript();function a(){M.manual||M.highlightAll()}if(r&&(M.filename=r.src,r.hasAttribute("data-manual")&&(M.manual=!0)),!M.manual){var l=document.readyState;"loading"===l||"interactive"===l&&r&&r.defer?document.addEventListener("DOMContentLoaded",a):window.requestAnimationFrame?window.requestAnimationFrame(a):window.setTimeout(a,16)}return M}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,function(){return a}),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;!function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism);Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript;!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],s=a.variable[1].inside,i=0;i>/g,function(e,n){return"(?:"+s[+n]+")"})}function t(e,n,s){return RegExp(a(e,n),s||"")}function e(e,n){for(var s=0;s>/g,function(){return"(?:"+e+")"});return e.replace(/<>/g,"[^\\s\\S]")}var n="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",r="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",o="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var d=l(r),p=RegExp(l(n+" "+r+" "+i+" "+o)),c=l(r+" "+i+" "+o),u=l(n+" "+r+" "+o),g=e("<(?:[^<>;=+\\-*/%&|^]|<>)*>",2),b=e("\\((?:[^()]|<>)*\\)",2),h="@?\\b[A-Za-z_]\\w*\\b",f=a("<<0>>(?:\\s*<<1>>)?",[h,g]),m=a("(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*",[c,f]),k="\\[\\s*(?:,\\s*)*\\]",y=a("<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?",[m,k]),w=a("(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?",[a("\\(<<0>>+(?:,<<0>>+)+\\)",[a("[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>",[g,b,k])]),m,k]),v={keyword:p,punctuation:/[<>()?,.:[\]]/},x="'(?:[^\r\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'",$='"(?:\\\\.|[^\\\\"\r\n])*"';s.languages.csharp=s.languages.extend("clike",{string:[{pattern:t("(^|[^$\\\\])<<0>>",['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']),lookbehind:!0,greedy:!0},{pattern:t("(^|[^@$\\\\])<<0>>",[$]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:t("(\\busing\\s+static\\s+)<<0>>(?=\\s*;)",[m]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)",[h,w]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+)<<0>>(?=\\s*=)",[h]),lookbehind:!0},{pattern:t("(\\b<<0>>\\s+)<<1>>",[d,f]),lookbehind:!0,inside:v},{pattern:t("(\\bcatch\\s*\\(\\s*)<<0>>",[m]),lookbehind:!0,inside:v},{pattern:t("(\\bwhere\\s+)<<0>>",[h]),lookbehind:!0},{pattern:t("(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>",[y]),lookbehind:!0,inside:v},{pattern:t("\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))",[w,u,h]),inside:v}],keyword:p,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),s.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),s.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:t("([(,]\\s*)<<0>>(?=\\s*:)",[h]),lookbehind:!0,alias:"punctuation"}}),s.languages.insertBefore("csharp","class-name",{namespace:{pattern:t("(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])",[h]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:t("(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))",[b]),lookbehind:!0,alias:"class-name",inside:v},"return-type":{pattern:t("<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))",[w,m]),inside:v,alias:"class-name"},"constructor-invocation":{pattern:t("(\\bnew\\s+)<<0>>(?=\\s*[[({])",[w]),lookbehind:!0,inside:v,alias:"class-name"},"generic-method":{pattern:t("<<0>>\\s*<<1>>(?=\\s*\\()",[h,g]),inside:{function:t("^<<0>>",[h]),generic:{pattern:RegExp(g),alias:"class-name",inside:v}}},"type-list":{pattern:t("\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))",[d,f,h,w,p.source,b,"\\bnew\\s*\\(\\s*\\)"]),lookbehind:!0,inside:{"record-arguments":{pattern:t("(^(?!new\\s*\\()<<0>>\\s*)<<1>>",[f,b]),lookbehind:!0,greedy:!0,inside:s.languages.csharp},keyword:p,"class-name":{pattern:RegExp(w),greedy:!0,inside:v},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var _=$+"|"+x,B=a("/(?![*/])|//[^\r\n]*[\r\n]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>",[_]),E=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),R="\\b(?:assembly|event|field|method|module|param|property|return|type)\\b",z=a("<<0>>(?:\\s*\\(<<1>>*\\))?",[m,E]);s.languages.insertBefore("csharp","class-name",{attribute:{pattern:t("((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])",[R,z]),lookbehind:!0,greedy:!0,inside:{target:{pattern:t("^<<0>>(?=\\s*:)",[R]),alias:"keyword"},"attribute-arguments":{pattern:t("\\(<<0>>*\\)",[E]),inside:s.languages.csharp},"class-name":{pattern:RegExp(m),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var S=":[^}\r\n]+",j=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),A=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[j,S]),F=e(a("[^\"'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<>*\\)",[_]),2),P=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[F,S]);function U(e,n){return{interpolation:{pattern:t("((?:^|[^{])(?:\\{\\{)*)<<0>>",[e]),lookbehind:!0,inside:{"format-string":{pattern:t("(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)",[n,S]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:s.languages.csharp}}},string:/[\s\S]+/}}s.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:t('(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"',[A]),lookbehind:!0,greedy:!0,inside:U(A,j)},{pattern:t('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"',[P]),lookbehind:!0,greedy:!0,inside:U(P,F)}],char:{pattern:RegExp(x),greedy:!0}}),s.languages.dotnet=s.languages.cs=s.languages.csharp}(Prism);!function(e){var a=[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extends|extension|external|factory|final|finally|for|get|hide|if|implements|import|in|interface|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\b/],n="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",s={pattern:RegExp(n+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}}}};e.languages.dart=e.languages.extend("clike",{"class-name":[s,{pattern:RegExp(n+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])"),lookbehind:!0,inside:s.inside}],keyword:a,operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),e.languages.insertBefore("dart","string",{"string-literal":{pattern:/r?(?:("""|''')[\s\S]*?\1|(["'])(?:\\.|(?!\2)[^\\\r\n])*\2(?!\2))/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,lookbehind:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:e.languages.dart}}},string:/[\s\S]+/}},string:void 0}),e.languages.insertBefore("dart","class-name",{metadata:{pattern:/@\w+/,alias:"function"}}),e.languages.insertBefore("dart","class-name",{generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":s,keyword:a,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})}(Prism);Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),Prism.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete Prism.languages.go["class-name"];Prism.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:Prism.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},Prism.hooks.add("after-tokenize",function(n){if("graphql"===n.language)for(var o=n.tokens.filter(function(n){return"string"!=typeof n&&"comment"!==n.type&&"scalar"!==n.type}),s=0;s>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":a,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(//g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism);Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json;!function(n){n.languages.kotlin=n.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete n.languages.kotlin["class-name"];var e={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:n.languages.kotlin}};n.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:e},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:e},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete n.languages.kotlin.string,n.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),n.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),n.languages.kt=n.languages.kotlin,n.languages.kts=n.languages.kotlin}(Prism);!function(h){function v(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(h.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,r,e,o){if(a.language===r){var c=a.tokenStack=[];a.code=a.code.replace(e,function(e){if("function"==typeof o&&!o(e))return e;for(var n,t=c.length;-1!==a.code.indexOf(n=v(r,t));)++t;return c[t]=e,n}),a.grammar=h.languages.markup}}},tokenizePlaceholders:{value:function(p,k){if(p.language===k&&p.tokenStack){p.grammar=h.languages[k];var m=0,d=Object.keys(p.tokenStack);!function e(n){for(var t=0;t=d.length);t++){var a=n[t];if("string"==typeof a||a.content&&"string"==typeof a.content){var r=d[m],o=p.tokenStack[r],c="string"==typeof a?a:a.content,i=v(k,r),u=c.indexOf(i);if(-1|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;a.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:e,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:n,punctuation:s};var l={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:a.languages.php},r=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:l}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:l}}];a.languages.insertBefore("php","variable",{string:r,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:e,string:r,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:i,operator:n,punctuation:s}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),a.hooks.add("before-tokenize",function(e){if(/<\?/.test(e.code)){a.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g)}}),a.hooks.add("after-tokenize",function(e){a.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism);!function(e){var i=Prism.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:null},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:false|true)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(^|\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/};i.string[0].inside={function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:i},boolean:i.boolean,variable:i.variable}}();Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python;!function(e){e.languages.ruby=e.languages.extend("clike",{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===||[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),e.languages.insertBefore("ruby","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}});var n={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"}}};delete e.languages.ruby.function;var t="(?:"+["([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^]|\\((?:[^()\\\\]|\\\\[^])*\\))*\\)","\\{(?:[^{}\\\\]|\\\\[^]|\\{(?:[^{}\\\\]|\\\\[^])*\\})*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^]|\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\])*\\]","<(?:[^<>\\\\]|\\\\[^]|<(?:[^<>\\\\]|\\\\[^])*>)*>"].join("|")+")",i='(?:"(?:\\\\.|[^"\\\\\r\n])*"|(?:\\b[a-zA-Z_]\\w*|[^\\s\0-\\x7F]+)[?!]?|\\$.)';e.languages.insertBefore("ruby","keyword",{"regex-literal":[{pattern:RegExp("%r"+t+"[egimnosux]{0,6}"),greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp("(^|[^:]):"+i),lookbehind:!0,greedy:!0},{pattern:RegExp("([\r\n{(,][ \t]*)"+i+"(?=:(?!:))"),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),e.languages.insertBefore("ruby","string",{"string-literal":[{pattern:RegExp("%[qQiIwWs]?"+t),greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp("%x"+t),greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}}]}),delete e.languages.ruby.string,e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),e.languages.rb=e.languages.ruby}(Prism);Prism.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp('(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^(])|[^\\\\\r\n"])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp('(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^#])|[^\\\\\r\n])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp("#(?:(?:elseif|if)\\b(?:[ \t]*(?:![ \t]*)?(?:\\b\\w+\\b(?:[ \t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \t]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},Prism.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=Prism.languages.swift});!function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var s=e.languages.extend("typescript",{});delete s["class-name"],e.languages.typescript["class-name"].inside=s,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:s}}}}),e.languages.ts=e.languages.typescript}(Prism);!function(e){var n=/[*&][^\s[\]{},]+/,r=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,t="(?:"+r.source+"(?:[ \t]+"+n.source+")?|"+n.source+"(?:[ \t]+"+r.source+")?)",a="(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*".replace(//g,function(){return"[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]"}),d="\"(?:[^\"\\\\\r\n]|\\\\.)*\"|'(?:[^'\\\\\r\n]|\\\\.)*'";function o(e,n){n=(n||"").replace(/m/g,"")+"m";var r="([:\\-,[{]\\s*(?:\\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\\]|\\}|(?:[\r\n]\\s*)?#))".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return e});return RegExp(r,n)}e.languages.yaml={scalar:{pattern:RegExp("([\\-:]\\s*(?:\\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\\S[^\r\n]*(?:\\2[^\r\n]+)*)".replace(/<>/g,function(){return t})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp("((?:^|[:\\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\\s*:\\s)".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return"(?:"+a+"|"+d+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:o("\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?"),lookbehind:!0,alias:"number"},boolean:{pattern:o("false|true","i"),lookbehind:!0,alias:"important"},null:{pattern:o("null|~","i"),lookbehind:!0,alias:"important"},string:{pattern:o(d),lookbehind:!0,greedy:!0},number:{pattern:o("[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)","i"),lookbehind:!0},tag:r,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(Prism);!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var o="line-numbers",a=/\n(?!$)/g,e=Prism.plugins.lineNumbers={getLine:function(e,n){if("PRE"===e.tagName&&e.classList.contains(o)){var t=e.querySelector(".line-numbers-rows");if(t){var i=parseInt(e.getAttribute("data-start"),10)||1,r=i+(t.children.length-1);n");(i=document.createElement("span")).setAttribute("aria-hidden","true"),i.className="line-numbers-rows",i.innerHTML=l,t.hasAttribute("data-start")&&(t.style.counterReset="linenumber "+(parseInt(t.getAttribute("data-start"),10)-1)),e.element.appendChild(i),u([t]),Prism.hooks.run("line-numbers",e)}}}),Prism.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0})}function u(e){if(0!=(e=e.filter(function(e){var n=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null}(e)["white-space"];return"pre-wrap"===n||"pre-line"===n})).length){var n=e.map(function(e){var n=e.querySelector("code"),t=e.querySelector(".line-numbers-rows");if(n&&t){var i=e.querySelector(".line-numbers-sizer"),r=n.textContent.split(a);i||((i=document.createElement("span")).className="line-numbers-sizer",n.appendChild(i)),i.innerHTML="0",i.style.display="block";var s=i.getBoundingClientRect().height;return i.innerHTML="",{element:e,lines:r,lineHeights:[],oneLinerHeight:s,sizer:i}}}).filter(Boolean);n.forEach(function(e){var i=e.sizer,n=e.lines,r=e.lineHeights,s=e.oneLinerHeight;r[n.length-1]=void 0,n.forEach(function(e,n){if(e&&1 Date: Tue, 1 Mar 2022 18:57:35 +0100 Subject: [PATCH 37/41] chore: update upgrade for 0.13 --- CHANGES.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index b191fac06..cc0b75c96 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -47,10 +47,9 @@ ## Upgrades -- Upgraded `redis` extenstion to version 5.3.6 -- Upgraded `swoole` extenstion to version 4.8.6 -- Upgraded `imagick` extenstion to version 3.7.0 -- Upgraded GEO IP database to version February 2022 +- Upgraded `redis` extenstion to version 5.3.7 +- Upgraded `swoole` extenstion to version 4.8.7 +- Upgraded GEO IP database to version March 2022 # Version 0.12.3 From 500a0e496be61aab7255421e3a3756e31bdb0a3a Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 1 Mar 2022 23:52:29 +0400 Subject: [PATCH 38/41] feat: add timeout --- tests/e2e/Services/Realtime/RealtimeCustomClientTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php b/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php index cf2e32164..c5155a97a 100644 --- a/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php +++ b/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php @@ -226,6 +226,7 @@ class RealtimeCustomClientTest extends Scope $this->assertEquals('error', $payload['type']); $this->assertEquals(1008, $payload['data']['code']); $this->assertEquals('Invalid Origin. Register your new client (appwrite.unknown) as a new Web platform on your project console dashboard', $payload['data']['message']); + \usleep(250000); // 250ms $this->expectException(ConnectionException::class); // Check if server disconnnected client $client->close(); } From b2b7b5cc744efa15dde046f35f46e3fc76f210d9 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Tue, 1 Mar 2022 21:09:54 +0100 Subject: [PATCH 39/41] Update CHANGES.md --- CHANGES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index cc0b75c96..3039e7a3e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -29,6 +29,8 @@ - Renamed `providerToken` to `providerAccessToken` in sessions **Breaking Change** - New endpoint to refresh the OAuth Access Token - OAuth sessions now include `providerAccessTokenExpiry` and `providerRefreshToken` +- Notion and Strip have been added to the OAuth Providers +- Microsoft OAuth provider now supports custom domains ## Bugs - Fixed permission issues and is now more consistent and returns all resources From 9aef10d9a13947ea37717c520d833eeeef9d7084 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Tue, 1 Mar 2022 21:33:00 +0000 Subject: [PATCH 40/41] chore: update console sdk --- app/config/specs/open-api3-0.13.x-client.json | 2 +- app/config/specs/open-api3-0.13.x-console.json | 2 +- app/config/specs/open-api3-0.13.x-server.json | 2 +- app/config/specs/open-api3-latest-console.json | 2 +- app/config/specs/open-api3-latest-server.json | 2 +- app/config/specs/swagger2-0.13.x-client.json | 2 +- app/config/specs/swagger2-0.13.x-console.json | 2 +- app/config/specs/swagger2-0.13.x-server.json | 2 +- app/config/specs/swagger2-latest-console.json | 2 +- app/config/specs/swagger2-latest-server.json | 2 +- app/tasks/sdks.php | 2 +- .../console-web/examples/account/update-session.md | 14 ++++++++++++++ .../examples/functions/create-deployment.md | 14 ++++++++++++++ .../examples/functions/delete-deployment.md | 14 ++++++++++++++ .../examples/functions/get-deployment.md | 14 ++++++++++++++ .../examples/functions/list-deployments.md | 14 ++++++++++++++ .../console-web/examples/functions/retry-build.md | 14 ++++++++++++++ .../examples/functions/update-deployment.md | 14 ++++++++++++++ .../examples/storage/get-file-preview.md | 8 ++------ public/scripts/dependencies/appwrite.js | 2 +- 20 files changed, 112 insertions(+), 18 deletions(-) create mode 100644 docs/examples/0.13.x/console-web/examples/account/update-session.md create mode 100644 docs/examples/0.13.x/console-web/examples/functions/create-deployment.md create mode 100644 docs/examples/0.13.x/console-web/examples/functions/delete-deployment.md create mode 100644 docs/examples/0.13.x/console-web/examples/functions/get-deployment.md create mode 100644 docs/examples/0.13.x/console-web/examples/functions/list-deployments.md create mode 100644 docs/examples/0.13.x/console-web/examples/functions/retry-build.md create mode 100644 docs/examples/0.13.x/console-web/examples/functions/update-deployment.md diff --git a/app/config/specs/open-api3-0.13.x-client.json b/app/config/specs/open-api3-0.13.x-client.json index 290df75e5..687aa39f6 100644 --- a/app/config/specs/open-api3-0.13.x-client.json +++ b/app/config/specs/open-api3-0.13.x-client.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}}}},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}}}},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"schema":{"type":"string","x-example":"amazon"},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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"},"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":68,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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"}]}},"\/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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":159,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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","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","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":160,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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"}]},"patch":{"summary":"Update Membership Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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). Max length for each role is 32 chars.","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":175,"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,"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"}]}},"\/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":174,"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,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["sum","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["sum","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["sum","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["sum","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["sum","phones"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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"]}},"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"}}}},"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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}}}},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}}}},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"schema":{"type":"string","x-example":"amazon"},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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"},"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":68,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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"}]}},"\/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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":159,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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","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","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":160,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":{"email":{"type":"string","description":"Email of the new team member.","x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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"}]},"patch":{"summary":"Update Membership Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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). Max length for each role is 32 chars.","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":175,"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,"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"}]}},"\/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":174,"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,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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"]},"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"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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"]}},"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"}}}},"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-0.13.x-console.json b/app/config/specs/open-api3-0.13.x-console.json index d553c3ba4..af2ba7b0f 100644 --- a/app/config/specs/open-api3-0.13.x-console.json +++ b/app/config/specs/open-api3-0.13.x-console.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}}}},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}}}},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"schema":{"type":"string","x-example":"amazon"},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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"},"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":68,"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,"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"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":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d"},"in":"query"}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":107,"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,"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":118,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/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":127,"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,"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\/{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":128,"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,"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"},"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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domainList"}}}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"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 Domain","operationId":"projectsCreateDomain","tags":["projects"],"description":"","responses":{"201":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","x-example":null}},"required":["domain"]}}}}}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","x-example":null,"items":{"type":"string"}}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":139,"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,"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":126,"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,"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"},"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]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"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}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["sum","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["sum","collections"]},"indexList":{"description":"Indexes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["sum","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["sum","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["sum","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["sum","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["sum","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["sum","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["sum","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["sum","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["sum","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"$ref":"#\/components\/schemas\/project"},"x-example":""}},"required":["sum","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":""}},"required":["sum","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":""}},"required":["sum","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":""}},"required":["sum","platforms"]},"domainList":{"description":"Domains List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":""}},"required":["sum","domains"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["sum","phones"]},"metricList":{"description":"Metric List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":""}},"required":["sum","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"sum":{"type":"integer","description":"Total sum of items in the list.","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\/attributeString"}]},"x-example":""}},"required":["sum","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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}}}},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}}}},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"schema":{"type":"string","x-example":"amazon"},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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"},"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":68,"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,"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"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":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d"},"in":"query"}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":107,"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,"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":118,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/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":127,"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,"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\/{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":128,"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,"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"},"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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domainList"}}}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"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 Domain","operationId":"projectsCreateDomain","tags":["projects"],"description":"","responses":{"201":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","x-example":null}},"required":["domain"]}}}}}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","x-example":null,"items":{"type":"string"}}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":139,"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,"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":126,"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,"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"},"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]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"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}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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"]},"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"]},"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"]},"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"]},"domainList":{"description":"Domains List","type":"object","properties":{"total":{"type":"integer","description":"Total number of domains documents that matched your query.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":""}},"required":["total","domains"]},"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"]},"metricList":{"description":"Metric List","type":"object","properties":{"total":{"type":"integer","description":"Total number of metrics documents that matched your query.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":""}},"required":["total","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"object","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"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-0.13.x-server.json b/app/config/specs/open-api3-0.13.x-server.json index 3609077d7..5dca7a799 100644 --- a/app/config/specs/open-api3-0.13.x-server.json +++ b/app/config/specs/open-api3-0.13.x-server.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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"},"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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["sum","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["sum","collections"]},"indexList":{"description":"Indexes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["sum","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["sum","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["sum","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["sum","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["sum","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["sum","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["sum","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["sum","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["sum","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["sum","phones"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"sum":{"type":"integer","description":"Total sum of items in the list.","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\/attributeString"}]},"x-example":""}},"required":["sum","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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"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"}}}},"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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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"},"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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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"]},"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"]},"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"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"object","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"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"}}}},"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 ffed4455d..af2ba7b0f 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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}}}},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}}}},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"schema":{"type":"string","x-example":"amazon"},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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"},"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":68,"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,"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"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":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d"},"in":"query"}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":107,"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,"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":118,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/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":127,"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,"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\/{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":128,"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,"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"},"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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domainList"}}}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"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 Domain","operationId":"projectsCreateDomain","tags":["projects"],"description":"","responses":{"201":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","x-example":null}},"required":["domain"]}}}}}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","x-example":null,"items":{"type":"string"}}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":139,"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,"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":126,"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,"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"},"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]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"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}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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"]},"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"]},"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"]},"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"]},"domainList":{"description":"Domains List","type":"object","properties":{"total":{"type":"integer","description":"Total number of domains documents that matched your query.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":""}},"required":["total","domains"]},"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"]},"metricList":{"description":"Metric List","type":"object","properties":{"total":{"type":"integer","description":"Total number of metrics documents that matched your query.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":""}},"required":["total","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}}}},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}}}},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"schema":{"type":"string","x-example":"amazon"},"in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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"},"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":68,"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,"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"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":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d"},"in":"query"}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":107,"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,"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":118,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"name":{"type":"string","description":"Project name. Max length: 128 chars.","x-example":"[NAME]"},"teamId":{"type":"string","description":"Team unique ID.","x-example":"[TEAM_ID]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/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":127,"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,"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\/{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":128,"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,"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"},"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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domainList"}}}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"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 Domain","operationId":"projectsCreateDomain","tags":["projects"],"description":"","responses":{"201":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","x-example":null}},"required":["domain"]}}}}}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","tags":["projects"],"description":"","responses":{"200":{"description":"Domain","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/domain"}}}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"schema":{"type":"string","x-example":"[DOMAIN_ID]"},"in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","x-example":null,"items":{"type":"string"}}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":139,"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,"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":126,"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,"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"},"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]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","x-example":false}},"required":["service","status"]}}}}}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"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}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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"]},"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"]},"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"]},"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"]},"domainList":{"description":"Domains List","type":"object","properties":{"total":{"type":"integer","description":"Total number of domains documents that matched your query.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":""}},"required":["total","domains"]},"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"]},"metricList":{"description":"Metric List","type":"object","properties":{"total":{"type":"integer","description":"Total number of metrics documents that matched your query.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":""}},"required":["total","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"object","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"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 11ca36be1..5dca7a799 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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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"},"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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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"]},"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"]},"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"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"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"}}}},"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":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","x-example":"password"}},"required":["password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}}}}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"schema":{"type":"string","x-example":"aa"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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"},"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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"schema":{"type":"string","x-example":"af"},"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text 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"},{"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.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}}}}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","tags":["database"],"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":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name","permission"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}}}}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}}},"required":["data"]}}}}},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","tags":["database"],"description":"","responses":{"201":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","tags":["database"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}}}},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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]"},"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":["entrypoint","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":"Deployments List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deploymentList"}}}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","x-example":false}}}}}}}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/cache":{"get":{"summary":"Get Cache","operationId":"healthGetCache","tags":["health"],"description":"Check the Appwrite in-memory cache server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getCache","weight":110,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/db":{"get":{"summary":"Get DB","operationId":"healthGetDB","tags":["health"],"description":"Check the Appwrite database server is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","tags":["health"],"description":"Get the number of usage stats 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":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/storage\/local":{"get":{"summary":"Get Local Storage","operationId":"healthGetStorageLocal","tags":["health"],"description":"Check the Appwrite local storage device is up and connection is successful.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"getStorageLocal","weight":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","x-example":null,"items":{"type":"string"}},"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","permission"]}}}}},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"schema":{"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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 your own unique ID or pass the string \"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":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","x-example":null,"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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":["email","roles","url"]}}}}}},"\/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":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}}}}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"string","x-example":"[CURSOR]","default":""},"in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"schema":{"type":"string","x-example":"after","default":"after"},"in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"schema":{"type":"string","x-example":"ASC","default":"ASC"},"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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":25},"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":0},"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}}}}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"components":{"schemas":{"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"]},"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"]},"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"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"object","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"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"}}}},"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-0.13.x-client.json b/app/config/specs/swagger2-0.13.x-client.json index ddbdf6e3c..4a786c930 100644 --- a/app/config/specs/swagger2-0.13.x-client.json +++ b/app/config/specs/swagger2-0.13.x-client.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"0.12.3","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"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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","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":68,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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"}]}},"\/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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":159,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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","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","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":160,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":{"email":{"type":"string","description":"Email of the new team member.","default":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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"}]},"patch":{"summary":"Update Membership Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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). Max length for each role is 32 chars.","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":175,"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,"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"}]}},"\/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":174,"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,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"documentList":{"description":"Documents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["sum","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["sum","files"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["sum","memberships"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["sum","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["sum","phones"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"0.12.3","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"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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","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":68,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}\/deployments\/{deploymentId}\/builds\/{buildId}":{"post":{"summary":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"auth":{"Project":[]}},"security":[{"Project":[],"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"}]}},"\/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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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":159,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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","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","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":160,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":{"email":{"type":"string","description":"Email of the new team member.","default":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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"}]},"patch":{"summary":"Update Membership Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":{"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). Max length for each role is 32 chars.","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":175,"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,"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"}]}},"\/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":174,"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,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"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"]},"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"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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"]}},"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-0.13.x-console.json b/app/config/specs/swagger2-0.13.x-console.json index 5b65714c1..6199c60e9 100644 --- a/app/config/specs/swagger2-0.13.x-console.json +++ b/app/config/specs/swagger2-0.13.x-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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","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":68,"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,"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"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":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d","in":"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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"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]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["password"]}}]}},"\/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":127,"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,"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\/{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":128,"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,"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","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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","schema":{"$ref":"#\/definitions\/domainList"}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create Domain","operationId":"projectsCreateDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null}},"required":["domain"]}}]}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","default":null,"x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","default":null,"x-example":null,"items":{"type":"string"}}},"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":139,"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,"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":126,"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,"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"},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":"","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":"","x-example":"[SECRET]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"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":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}]}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"documentList":{"description":"Documents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["sum","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["sum","collections"]},"indexList":{"description":"Indexes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["sum","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["sum","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["sum","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["sum","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["sum","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["sum","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["sum","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["sum","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["sum","executions"]},"projectList":{"description":"Projects List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"projects":{"type":"array","description":"List of projects.","items":{"type":"object","$ref":"#\/definitions\/project"},"x-example":""}},"required":["sum","projects"]},"webhookList":{"description":"Webhooks List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"webhooks":{"type":"array","description":"List of webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":""}},"required":["sum","webhooks"]},"keyList":{"description":"API Keys List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"keys":{"type":"array","description":"List of keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":""}},"required":["sum","keys"]},"platformList":{"description":"Platforms List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"platforms":{"type":"array","description":"List of platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":""}},"required":["sum","platforms"]},"domainList":{"description":"Domains List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":""}},"required":["sum","domains"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["sum","phones"]},"metricList":{"description":"Metric List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":""}},"required":["sum","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"sum":{"type":"integer","description":"Total sum of items in the list.","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\/attributeString"}]},"x-example":""}},"required":["sum","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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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","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":68,"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,"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"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":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d","in":"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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"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]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["password"]}}]}},"\/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":127,"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,"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\/{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":128,"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,"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","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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","schema":{"$ref":"#\/definitions\/domainList"}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create Domain","operationId":"projectsCreateDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null}},"required":["domain"]}}]}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","default":null,"x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","default":null,"x-example":null,"items":{"type":"string"}}},"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":139,"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,"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":126,"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,"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"},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":"","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":"","x-example":"[SECRET]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"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":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}]}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"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"]},"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"]},"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"]},"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"]},"domainList":{"description":"Domains List","type":"object","properties":{"total":{"type":"integer","description":"Total number of domains documents that matched your query.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":""}},"required":["total","domains"]},"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"]},"metricList":{"description":"Metric List","type":"object","properties":{"total":{"type":"integer","description":"Total number of metrics documents that matched your query.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":""}},"required":["total","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"object","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"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-0.13.x-server.json b/app/config/specs/swagger2-0.13.x-server.json index d0fc65eab..71adb9792 100644 --- a/app/config/specs/swagger2-0.13.x-server.json +++ b/app/config/specs/swagger2-0.13.x-server.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"0.12.3","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"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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","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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}]}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"documentList":{"description":"Documents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["sum","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["sum","collections"]},"indexList":{"description":"Indexes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["sum","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["sum","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["sum","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["sum","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["sum","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["sum","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["sum","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["sum","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["sum","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["sum","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["sum","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["sum","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["sum","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["sum","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["sum","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["sum","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"sum":{"type":"integer","description":"Total number of items available on the server.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["sum","phones"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"sum":{"type":"integer","description":"Total sum of items in the list.","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\/attributeString"}]},"x-example":""}},"required":["sum","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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"sum":{"type":"integer","description":"Total sum of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","sum"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"0.12.3","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"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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","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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}]}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"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"]},"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"]},"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"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"object","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"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 cda6ab337..6199c60e9 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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","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":68,"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,"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"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":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d","in":"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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"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]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["password"]}}]}},"\/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":127,"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,"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\/{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":128,"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,"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","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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","schema":{"$ref":"#\/definitions\/domainList"}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create Domain","operationId":"projectsCreateDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null}},"required":["domain"]}}]}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","default":null,"x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","default":null,"x-example":null,"items":{"type":"string"}}},"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":139,"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,"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":126,"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,"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"},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":"","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":"","x-example":"[SECRET]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"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":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}]}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"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"]},"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"]},"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"]},"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"]},"domainList":{"description":"Domains List","type":"object","properties":{"total":{"type":"integer","description":"Total number of domains documents that matched your query.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":""}},"required":["total","domains"]},"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"]},"metricList":{"description":"Metric List","type":"object","properties":{"total":{"type":"integer","description":"Total number of metrics documents that matched your query.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":""}},"required":["total","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"0.12.3","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 currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateVerification) 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](\/docs\/client\/account#accountCreateSession).","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":37,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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 a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"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\/jwt":{"post":{"summary":"Create Account 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":46,"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":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"post":{"summary":"Create Account Session","operationId":"accountCreateSession","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.","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createSession","weight":38,"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":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"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"]}}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"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](\/docs\/client\/account#accountUpdateEmail) or create an [OAuth2 session](\/docs\/client\/account#accountCreateOAuth2Session).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createAnonymousSession","weight":45,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/sessions\/magic-url":{"post":{"summary":"Create Magic URL session","operationId":"accountCreateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an email with a secret key for creating a session. 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](\/docs\/client\/account#accountUpdateMagicURLSession) 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.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":43,"cookies":false,"type":"","demo":"account\/create-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},email:{param-email}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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"},"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"}},"required":["userId","email"]}}]},"put":{"summary":"Create Magic URL session (confirmation)","operationId":"accountUpdateMagicURLSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating the session with the Magic URL. 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\/sessions\/magic-url](\/docs\/client\/account#accountCreateMagicURLSession) 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":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateMagicURLSession","weight":44,"cookies":false,"type":"","demo":"account\/update-magic-u-r-l-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-magic-url-session.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"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\/sessions\/oauth2\/{provider}":{"get":{"summary":"Create Account Session with OAuth2","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","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":39,"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":"public","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"provider","description":"OAuth2 Provider. Currently, supported providers are: amazon, apple, bitbucket, bitly, box, discord, dropbox, facebook, github, gitlab, google, linkedin, microsoft, notion, paypal, paypalSandbox, salesforce, slack, spotify, tradeshift, tradeshiftBox, twitch, vk, yahoo, yammer, yandex, wordpress, stripe.","required":true,"type":"string","x-example":"amazon","in":"path"},{"name":"success","description":"URL to redirect back to your app after a successful login attempt. 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.","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 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":"scopes","description":"A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"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","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":68,"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,"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"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","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databaseListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":97,"cookies":false,"type":"","demo":"database\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"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":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databaseListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":76,"cookies":false,"type":"","demo":"database\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/database\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databaseGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getUsage","weight":74,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/database\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databaseGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":75,"cookies":false,"type":"","demo":"database\/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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","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":193,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"auth":{"Project":[]}},"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"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":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":196,"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,"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","default":"30d","in":"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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":121,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the project used as the starting point for the query, excluding the project itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":120,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[PROJECT_ID]"},"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]"},"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":122,"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,"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":124,"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,"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":129,"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,"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":{"password":{"type":"string","description":"Your user password for confirmation. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["password"]}}]}},"\/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":127,"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,"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\/{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":128,"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,"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","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}\/domains":{"get":{"summary":"List Domains","operationId":"projectsListDomains","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domains List","schema":{"$ref":"#\/definitions\/domainList"}}},"x-appwrite":{"method":"listDomains","weight":146,"cookies":false,"type":"","demo":"projects\/list-domains.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"}]},"post":{"summary":"Create Domain","operationId":"projectsCreateDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"createDomain","weight":145,"cookies":false,"type":"","demo":"projects\/create-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":{"domain":{"type":"string","description":"Domain name.","default":null,"x-example":null}},"required":["domain"]}}]}},"\/projects\/{projectId}\/domains\/{domainId}":{"get":{"summary":"Get Domain","operationId":"projectsGetDomain","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"getDomain","weight":147,"cookies":false,"type":"","demo":"projects\/get-domain.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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]},"delete":{"summary":"Delete Domain","operationId":"projectsDeleteDomain","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDomain","weight":149,"cookies":false,"type":"","demo":"projects\/delete-domain.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/projects\/{projectId}\/domains\/{domainId}\/verification":{"patch":{"summary":"Update Domain Verification Status","operationId":"projectsUpdateDomainVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Domain","schema":{"$ref":"#\/definitions\/domain"}}},"x-appwrite":{"method":"updateDomainVerification","weight":148,"cookies":false,"type":"","demo":"projects\/update-domain-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"domainId","description":"Domain unique ID.","required":true,"type":"string","x-example":"[DOMAIN_ID]","in":"path"}]}},"\/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":136,"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,"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":135,"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,"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.","default":null,"x-example":null,"items":{"type":"string"}}},"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":137,"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,"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":138,"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,"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","default":null,"x-example":null,"items":{"type":"string"}}},"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":139,"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,"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":126,"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,"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"},"appId":{"type":"string","description":"Provider app ID. Max length: 256 chars.","default":"","x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":"","x-example":"[SECRET]"}},"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":141,"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,"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":140,"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,"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"},"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":"[HOSTNAME]"}},"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":142,"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,"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":143,"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,"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":"[HOSTNAME]"}},"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":144,"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,"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":125,"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,"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"},"status":{"type":"boolean","description":"Service status.","default":null,"x-example":false}},"required":["service","status"]}}]}},"\/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":123,"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,"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","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":131,"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,"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":130,"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,"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.","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":132,"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,"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":133,"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,"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.","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":134,"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,"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"}]}},"\/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":151,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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](\/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":159,"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,"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](\/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":158,"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,"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](\/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","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","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":160,"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,"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](\/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":163,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":164,"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,"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","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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"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 Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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":169,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"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). Max length for each role is 32 chars.","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":175,"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,"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":174,"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,"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"]}}]}},"\/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":177,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":191,"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,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"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"]},"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"]},"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"]},"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"]},"domainList":{"description":"Domains List","type":"object","properties":{"total":{"type":"integer","description":"Total number of domains documents that matched your query.","x-example":5,"format":"int32"},"domains":{"type":"array","description":"List of domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":""}},"required":["total","domains"]},"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"]},"metricList":{"description":"Metric List","type":"object","properties":{"total":{"type":"integer","description":"Total number of metrics documents that matched your query.","x-example":5,"format":"int32"},"metrics":{"type":"array","description":"List of metrics.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":""}},"required":["total","metrics"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"object","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"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"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"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":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"providerAmazonAppid":{"type":"string","description":"Amazon OAuth app ID.","x-example":"123247283472834787438"},"providerAmazonSecret":{"type":"string","description":"Amazon OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerAppleAppid":{"type":"string","description":"Apple OAuth app ID.","x-example":"123247283472834787438"},"providerAppleSecret":{"type":"string","description":"Apple OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitbucketAppid":{"type":"string","description":"BitBucket OAuth app ID.","x-example":"123247283472834787438"},"providerBitbucketSecret":{"type":"string","description":"BitBucket OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBitlyAppid":{"type":"string","description":"Bitly OAuth app ID.","x-example":"123247283472834787438"},"providerBitlySecret":{"type":"string","description":"Bitly OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerBoxAppid":{"type":"string","description":"Box OAuth app ID.","x-example":"123247283472834787438"},"providerBoxSecret":{"type":"string","description":"Box OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDiscordAppid":{"type":"string","description":"Discord OAuth app ID.","x-example":"123247283472834787438"},"providerDiscordSecret":{"type":"string","description":"Discord OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerDropboxAppid":{"type":"string","description":"Dropbox OAuth app ID.","x-example":"123247283472834787438"},"providerDropboxSecret":{"type":"string","description":"Dropbox OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerFacebookAppid":{"type":"string","description":"Facebook OAuth app ID.","x-example":"123247283472834787438"},"providerFacebookSecret":{"type":"string","description":"Facebook OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGithubAppid":{"type":"string","description":"GitHub OAuth app ID.","x-example":"123247283472834787438"},"providerGithubSecret":{"type":"string","description":"GitHub OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGitlabAppid":{"type":"string","description":"GitLab OAuth app ID.","x-example":"123247283472834787438"},"providerGitlabSecret":{"type":"string","description":"GitLab OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerGoogleAppid":{"type":"string","description":"Google OAuth app ID.","x-example":"123247283472834787438"},"providerGoogleSecret":{"type":"string","description":"Google OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerLinkedinAppid":{"type":"string","description":"LinkedIn OAuth app ID.","x-example":"123247283472834787438"},"providerLinkedinSecret":{"type":"string","description":"LinkedIn OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMicrosoftAppid":{"type":"string","description":"Microsoft OAuth app ID.","x-example":"123247283472834787438"},"providerMicrosoftSecret":{"type":"string","description":"Microsoft OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerNotionAppid":{"type":"string","description":"Notion OAuth app ID.","x-example":"123247283472834787438"},"providerNotionSecret":{"type":"string","description":"Notion OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerPaypalSandboxAppid":{"type":"string","description":"PayPal OAuth app ID.","x-example":"123247283472834787438"},"providerPaypalSandboxSecret":{"type":"string","description":"PayPal OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSalesforceAppid":{"type":"string","description":"Salesforce OAuth app ID.","x-example":"123247283472834787438"},"providerSalesforceSecret":{"type":"string","description":"Salesforce OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSlackAppid":{"type":"string","description":"Slack OAuth app ID.","x-example":"123247283472834787438"},"providerSlackSecret":{"type":"string","description":"Slack OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerSpotifyAppid":{"type":"string","description":"Spotify OAuth app ID.","x-example":"123247283472834787438"},"providerSpotifySecret":{"type":"string","description":"Spotify OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTradeshiftBoxAppid":{"type":"string","description":"Tradeshift OAuth app ID.","x-example":"123247283472834787438"},"providerTradeshiftBoxSecret":{"type":"string","description":"Tradeshift OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerTwitchAppid":{"type":"string","description":"Twitch OAuth app ID.","x-example":"123247283472834787438"},"providerTwitchSecret":{"type":"string","description":"Twitch OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerVkAppid":{"type":"string","description":"VK OAuth app ID.","x-example":"123247283472834787438"},"providerVkSecret":{"type":"string","description":"VK OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYahooAppid":{"type":"string","description":"Yahoo OAuth app ID.","x-example":"123247283472834787438"},"providerYahooSecret":{"type":"string","description":"Yahoo OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYammerAppid":{"type":"string","description":"Yammer OAuth app ID.","x-example":"123247283472834787438"},"providerYammerSecret":{"type":"string","description":"Yammer OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerYandexAppid":{"type":"string","description":"Yandex OAuth app ID.","x-example":"123247283472834787438"},"providerYandexSecret":{"type":"string","description":"Yandex OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerWordpressAppid":{"type":"string","description":"WordPress OAuth app ID.","x-example":"123247283472834787438"},"providerWordpressSecret":{"type":"string","description":"WordPress OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerStripeAppid":{"type":"string","description":"Stripe OAuth app ID.","x-example":"123247283472834787438"},"providerStripeSecret":{"type":"string","description":"Stripe OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"providerMockAppid":{"type":"string","description":"Mock OAuth app ID.","x-example":"123247283472834787438"},"providerMockSecret":{"type":"string","description":"Mock OAuth secret ID.","x-example":"djsgudsdsewe43434343dd34..."},"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},"serviceStatusForDatabase":{"type":"boolean","description":"Database 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}},"required":["$id","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authLimit","platforms","webhooks","keys","domains","providerAmazonAppid","providerAmazonSecret","providerAppleAppid","providerAppleSecret","providerBitbucketAppid","providerBitbucketSecret","providerBitlyAppid","providerBitlySecret","providerBoxAppid","providerBoxSecret","providerDiscordAppid","providerDiscordSecret","providerDropboxAppid","providerDropboxSecret","providerFacebookAppid","providerFacebookSecret","providerGithubAppid","providerGithubSecret","providerGitlabAppid","providerGitlabSecret","providerGoogleAppid","providerGoogleSecret","providerLinkedinAppid","providerLinkedinSecret","providerMicrosoftAppid","providerMicrosoftSecret","providerNotionAppid","providerNotionSecret","providerPaypalAppid","providerPaypalSecret","providerPaypalSandboxAppid","providerPaypalSandboxSecret","providerSalesforceAppid","providerSalesforceSecret","providerSlackAppid","providerSlackSecret","providerSpotifyAppid","providerSpotifySecret","providerTradeshiftAppid","providerTradeshiftSecret","providerTradeshiftBoxAppid","providerTradeshiftBoxSecret","providerTwitchAppid","providerTwitchSecret","providerVkAppid","providerVkSecret","providerYahooAppid","providerYahooSecret","providerYammerAppid","providerYammerSecret","providerYandexAppid","providerYandexSecret","providerWordpressAppid","providerWordpressSecret","providerStripeAppid","providerStripeSecret","providerMockAppid","providerMockSecret","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabase","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"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"}},"required":["$id","name","url","events","security","httpUser","httpPass"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"}},"required":["$id","name","scopes","secret"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"registerable":{"type":"string","description":"Registerable domain name.","x-example":"company.com"},"tld":{"type":"string","description":"TLD name.","x-example":"com"},"verification":{"type":"boolean","description":"Verification process status.","x-example":true},"certificateId":{"type":"string","description":"Certificate ID.","x-example":"6ejea5c13377e"}},"required":["$id","domain","registerable","tld","verification","certificateId"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"My Web App"},"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","name","type","key","store","hostname","httpUser","httpPass"]},"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":{"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":["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"]},"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\/metricList"},"x-example":{}},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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\/metricList"},"x-example":{}},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"filesStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by files (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"tagsStorage":{"type":"array","description":"Aggregated stats for the occupied storage size by tags (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","filesStorage","tagsStorage","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\/metricList"},"x-example":{}},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"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"},"functionsExecutions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsFailures":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functionsCompute":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","functionsExecutions","functionsFailures","functionsCompute"]},"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\/metricList"},"x-example":{}},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"functions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"collections":{"type":"array","description":"Aggregated stats for number of collections.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metricList"},"x-example":{}}},"required":["range","requests","network","functions","documents","collections","users","storage"]}},"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 f23bce7e5..71adb9792 100644 --- a/app/config/specs/swagger2-latest-server.json +++ b/app/config/specs/swagger2-latest-server.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"0.12.3","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"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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","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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}]}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"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"]},"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"]},"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"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"string","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"0.12.3","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"}}},"paths":{"\/account":{"get":{"summary":"Get Account","operationId":"accountGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user data as JSON object.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"get","weight":47,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Account","operationId":"accountDelete","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete a currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. This is done to avoid deleted accounts being overtaken by new users with the same email address. Any user-related resources like documents or storage files should be deleted separately.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":56,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/email":{"patch":{"summary":"Update Account 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":54,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/logs":{"get":{"summary":"Get Account Logs","operationId":"accountGetLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of latest security activity logs. 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":"getLogs","weight":50,"cookies":false,"type":"","demo":"account\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Account 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":52,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account 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 and Team Invites, oldPassword is optional.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePassword","weight":53,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":"password"},"oldPassword":{"type":"string","description":"Current user password. Must be at least 8 chars.","default":"","x-example":"password"}},"required":["password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":48,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"patch":{"summary":"Update Account 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":55,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountUpdateRecovery) 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":60,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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](\/docs\/client\/account#accountCreateRecovery) 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":61,"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":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 at least 8 chars.","default":null,"x-example":"password"},"passwordAgain":{"type":"string","description":"Repeat new user password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["userId","secret","password","passwordAgain"]}}]}},"\/account\/sessions":{"get":{"summary":"Get Account Sessions","operationId":"accountGetSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user list of active sessions across different devices.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"getSessions","weight":49,"cookies":false,"type":"","demo":"account\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/get-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete All Account 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":59,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/account\/sessions\/{sessionId}":{"get":{"summary":"Get Session By ID","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":51,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":58,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 Account Session","operationId":"accountDeleteSession","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Use this endpoint to log out the currently logged in user from all their account sessions across all of their different devices. When using the Session ID argument, only the unique session ID provided is deleted.\n","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSession","weight":57,"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":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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\/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](\/docs\/client\/account#accountUpdateVerification). 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":62,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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":63,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"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 \/account\/sessions endpoint. Use width, height and quality arguments to change the output settings.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":65,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Browser Code.","required":true,"type":"string","x-example":"aa","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":64,"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,"auth":{"Project":[],"Key":[]}},"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","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":68,"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,"auth":{"Project":[],"Key":[]}},"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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":66,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"code","description":"Country Code. ISO Alpha-2 country code format.","required":true,"type":"string","x-example":"af","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":67,"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,"auth":{"Project":[],"Key":[]}},"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.","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.","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":70,"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,"auth":{"Project":[],"Key":[]}},"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":"color","description":"Changes text color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","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.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":69,"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,"auth":{"Project":[],"Key":[]}},"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 0 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"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"}]}},"\/database\/collections":{"get":{"summary":"List Collections","operationId":"databaseListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's collections. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":72,"cookies":false,"type":"","demo":"database\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of collection to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the collection used as the starting point for the query, excluding the collection itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databaseCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Collection.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":71,"cookies":false,"type":"","demo":"database\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string \"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":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["collectionId","name","permission","read","write"]}}]}},"\/database\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databaseGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":73,"cookies":false,"type":"","demo":"database\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databaseUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":77,"cookies":false,"type":"","demo":"database\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading documents in this collection. You can use collection-level permission set once on the collection using the `read` and `write` params, or you can set document-level permission where each document read and write params will decide who has access to read and write to each document individually. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"document"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name","permission"]}}]},"delete":{"summary":"Delete Collection","operationId":"databaseDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["database"],"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":78,"cookies":false,"type":"","demo":"database\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databaseListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":87,"cookies":false,"type":"","demo":"database\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/database\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databaseCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a boolean attribute.\n","responses":{"201":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":86,"cookies":false,"type":"","demo":"database\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databaseCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an email attribute.\n","responses":{"201":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":80,"cookies":false,"type":"","demo":"database\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databaseCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":81,"cookies":false,"type":"","demo":"database\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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.","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databaseCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":85,"cookies":false,"type":"","demo":"database\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databaseCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"201":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":84,"cookies":false,"type":"","demo":"database\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databaseCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create IP address attribute.\n","responses":{"201":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":82,"cookies":false,"type":"","demo":"database\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databaseCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a string attribute.\n","responses":{"201":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":79,"cookies":false,"type":"","demo":"database\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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}},"required":["key","size","required"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databaseCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a URL attribute.\n","responses":{"201":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":83,"cookies":false,"type":"","demo":"database\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"]}}]}},"\/database\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databaseGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, 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\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":88,"cookies":false,"type":"","demo":"database\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":89,"cookies":false,"type":"","demo":"database\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/database\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databaseListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project's documents. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":95,"cookies":false,"type":"","demo":"database\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"limit","description":"Maximum number of documents to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the document used as the starting point for the query, excluding the document itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderAttributes","description":"Array of attributes used to sort results.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"orderTypes","description":"Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databaseCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/database#databaseCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":94,"cookies":false,"type":"","demo":"database\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection). 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 your own unique ID or pass the string \"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":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/database\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databaseGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":96,"cookies":false,"type":"","demo":"database\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]},"patch":{"summary":"Update Document","operationId":"databaseUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"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":98,"cookies":false,"type":"","demo":"database\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/update-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"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.","default":{},"x-example":"{}"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}}},"required":["data"]}}]},"delete":{"summary":"Delete Document","operationId":"databaseDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"Delete a document by its unique ID. This endpoint deletes only the parent documents, its attributes and relations to other documents. Child documents **will not** be deleted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":99,"cookies":false,"type":"","demo":"database\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"}]}},"\/database\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databaseListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":91,"cookies":false,"type":"","demo":"database\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databaseCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"201":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":90,"cookies":false,"type":"","demo":"database\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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"},"attributes":{"type":"array","description":"Array of attributes to index.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/database\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databaseGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["database"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":92,"cookies":false,"type":"","demo":"database\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":"databaseDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["database"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":93,"cookies":false,"type":"","demo":"database\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/database\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/database#createCollection).","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":193,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of functions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the function used as the starting point for the query, excluding the function itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/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":192,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"functionId":{"type":"string","description":"Function ID. Choose your own unique ID or pass the string \"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":"[FUNCTION_ID]"},"name":{"type":"string","description":"Function name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List the currently active function runtimes.","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active in your project.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":194,"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,"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":195,"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,"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":197,"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,"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]"},"execute":{"type":"array","description":"An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":null,"items":{"type":"string"}},"vars":{"type":"object","description":"Key-value JSON object that will be passed to the function as environment variables.","default":[],"x-example":"{}"},"events":{"type":"array","description":"Events list.","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}},"required":["name","execute"]}}]},"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":199,"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,"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":201,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_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"},{"name":"limit","description":"Maximum number of deployments to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the deployment used as the starting point for the query, excluding the deployment itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"201":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":200,"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,"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":true,"type":"string","x-example":"[ENTRYPOINT]","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":"Deployments List","schema":{"$ref":"#\/definitions\/deploymentList"}}},"x-appwrite":{"method":"getDeployment","weight":202,"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,"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":198,"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,"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":203,"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,"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":"Retry Build","operationId":"functionsRetryBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"retryBuild","weight":207,"cookies":false,"type":"","demo":"functions\/retry-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/retry-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"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}\/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. On admin mode, this endpoint will return a list of all of the project's executions. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":205,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"limit","description":"Maximum number of executions to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"cursor","description":"ID of the execution used as the starting point for the query, excluding the execution itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","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":204,"cookies":false,"type":"","demo":"functions\/create-execution.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-execution.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"execution.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":{"data":{"type":"string","description":"String of custom data to send to function.","default":"","x-example":"[DATA]"},"async":{"type":"boolean","description":"Execute code asynchronously. Default value is true.","default":true,"x-example":false}}}}]}},"\/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":206,"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,"auth":{"Project":[],"Key":[]}},"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"}]}},"\/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":107,"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,"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":118,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getCache","weight":110,"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,"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 server is up and connection is successful.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"getDB","weight":109,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":115,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":116,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":113,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/health\/queue\/usage":{"get":{"summary":"Get Usage Queue","operationId":"healthGetQueueUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Get the number of usage stats that are waiting to be processed in the Appwrite internal queue server.","responses":{"200":{"description":"Health Queue","schema":{"$ref":"#\/definitions\/healthQueue"}}},"x-appwrite":{"method":"getQueueUsage","weight":114,"cookies":false,"type":"","demo":"health\/get-queue-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/health\/get-queue-usage.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"health.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":112,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}]}},"\/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":117,"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,"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":111,"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,"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":100,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/continents":{"get":{"summary":"List Continents","operationId":"localeGetContinents","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":"getContinents","weight":104,"cookies":false,"type":"","demo":"locale\/get-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeGetCountries","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":"getCountries","weight":101,"cookies":false,"type":"","demo":"locale\/get-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeGetCountriesEU","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":"getCountriesEU","weight":102,"cookies":false,"type":"","demo":"locale\/get-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeGetCountriesPhones","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":"getCountriesPhones","weight":103,"cookies":false,"type":"","demo":"locale\/get-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeGetCurrencies","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":"getCurrencies","weight":105,"cookies":false,"type":"","demo":"locale\/get-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeGetLanguages","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":"getLanguages","weight":106,"cookies":false,"type":"","demo":"locale\/get-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/get-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/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":151,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Results offset. The default value is 0. Use this param to manage pagination.","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the bucket used as the starting point for the query, excluding the bucket itself. Should be used for efficient pagination when working with large sets of data.","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":150,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"bucketId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `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":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self-hosted setups you can change the max limit by changing the `_APP_STORAGE_LIMIT` environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":30000000,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]}},"\/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":152,"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,"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":153,"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,"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]"},"permission":{"type":"string","description":"Permissions type model to use for reading files in this bucket. You can use bucket-level permission set once on the bucket using the `read` and `write` params, or you can set file-level permission where each file read and write params will decide who has access to read and write to each file individually. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"file"},"read":{"type":"array","description":"An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"enabled":{"type":"boolean","description":"Is bucket enabled?","default":true,"x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size allowed in bytes. Maximum allowed value is 30MB. For self hosted version you can change the limit by changing _APP_STORAGE_LIMIT environment variable. [Learn more about storage environment variables](docs\/environment-variables#storage)","default":null,"x-example":null},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions","default":[],"x-example":null,"items":{"type":"string"}},"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","permission"]}}]},"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":154,"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,"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. On admin mode, this endpoint will return a list of all of the project's files. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":156,"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,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_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"},{"name":"limit","description":"Maximum number of files to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the file used as the starting point for the query, excluding the file itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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](\/docs\/server\/database#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":155,"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":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/docs\/server\/storage#createBucket).","required":true,"type":"string","x-example":"[BUCKET_ID]","in":"path"},{"name":"fileId","description":"File ID. Choose your own unique ID or pass the string \"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.","required":true,"x-upload-id":true,"type":"string","x-example":"[FILE_ID]","in":"formData"},{"name":"file","description":"Binary file.","required":true,"type":"file","in":"formData"},{"name":"read","description":"An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","in":"formData"},{"name":"write","description":"An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"role:all\"]","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":157,"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,"auth":{"Project":[],"Key":[]}},"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](\/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":161,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":{"read":{"type":"array","description":"An array of strings with read permissions. By default no user is granted with any read permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","items":{"type":"string"}},"write":{"type":"array","description":"An array of strings with write permissions. By default no user is granted with any write permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions) and get a full list of available permissions.","default":null,"x-example":"[\"role:all\"]","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":162,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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](\/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":159,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"bucketId","description":"Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](\/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":158,"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,"auth":{"Project":[],"Key":[]}},"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](\/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","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","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":160,"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,"auth":{"Project":[],"Key":[]}},"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](\/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.\r\n\r\nIn admin mode, this endpoint returns a list of all the teams in the current project. [Learn more about different API modes](\/docs\/admin).","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":166,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of teams to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the team used as the starting point for the query, excluding the team itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":165,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"teamId":{"type":"string","description":"Team ID. Choose your own unique ID or pass the string \"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":"[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](\/docs\/permissions). Max length for each role is 32 chars.","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":167,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]},"put":{"summary":"Update Team","operationId":"teamsUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Update a team using its ID. Only members with the owner role can update the team.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"update","weight":168,"cookies":false,"type":"","demo":"teams\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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":169,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"Get Team Memberships","operationId":"teamsGetMemberships","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":"getMemberships","weight":171,"cookies":false,"type":"","demo":"teams\/get-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_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"},{"name":"limit","description":"Maximum number of memberships to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the membership used as the starting point for the query, excluding the membership itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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. If initiated from the client SDK, an email with a link to join the team will be sent to the member's email address and an account will be created for them should they not be signed up already. If initiated from server-side SDKs, the new member will automatically be added to the team.\n\nUse the 'url' parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the [Update Team Membership Status](\/docs\/client\/teams#teamsUpdateMembershipStatus) 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) the only valid redirect URL's are the once from domains you have set when adding your platforms in the console interface.","responses":{"201":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"createMembership","weight":170,"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,"auth":{"Project":[],"Key":[]}},"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":null,"x-example":"email@example.com"},"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](\/docs\/permissions). Max length for each role is 32 chars.","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":null,"x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["email","roles","url"]}}]}},"\/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":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"getMembership","weight":172,"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,"auth":{"Project":[],"Key":[]}},"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 Roles","operationId":"teamsUpdateMembershipRoles","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](\/docs\/permissions).","responses":{"200":{"description":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"updateMembershipRoles","weight":173,"cookies":false,"type":"","demo":"teams\/update-membership-roles.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/update-team-membership-roles.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"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). Max length for each role is 32 chars.","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":175,"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,"auth":{"Project":[],"Key":[]}},"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":174,"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,"auth":{"Project":[],"JWT":[]}},"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"]}}]}},"\/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":177,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"},{"name":"limit","description":"Maximum number of users to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this param to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"},{"name":"cursor","description":"ID of the user used as the starting point for the query, excluding the user itself. Should be used for efficient pagination when working with large sets of data. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"string","x-example":"[CURSOR]","default":"","in":"query"},{"name":"cursorDirection","description":"Direction of the cursor.","required":false,"type":"string","x-example":"after","default":"after","in":"query"},{"name":"orderType","description":"Order result by ASC or DESC order.","required":false,"type":"string","x-example":"ASC","default":"ASC","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":176,"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,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose your own unique ID or pass the string \"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. Must be at least 8 chars.","default":null,"x-example":"password"},"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":178,"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,"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.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":190,"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,"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":186,"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,"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}\/logs":{"get":{"summary":"Get User Logs","operationId":"usersGetLogs","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":"getLogs","weight":181,"cookies":false,"type":"","demo":"users\/get-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"limit","description":"Maximum number of logs to return in response. By default will return maximum 25 results. Maximum of 100 results allowed per request.","required":false,"type":"integer","format":"int32","x-example":0,"default":25,"in":"query"},{"name":"offset","description":"Offset value. The default value is 0. Use this value to manage pagination. [learn more about pagination](https:\/\/appwrite.io\/docs\/pagination)","required":false,"type":"integer","format":"int32","x-example":0,"default":0,"in":"query"}]}},"\/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":184,"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,"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":185,"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,"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":"password"}},"required":["password"]}}]}},"\/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":179,"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,"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":187,"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,"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":"Get User Sessions","operationId":"usersGetSessions","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":"getSessions","weight":180,"cookies":false,"type":"","demo":"users\/get-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/get-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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 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":189,"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,"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":188,"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,"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.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":182,"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,"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}\/verification":{"patch":{"summary":"Update Email Verification","operationId":"usersUpdateVerification","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":"updateVerification","weight":183,"cookies":false,"type":"","demo":"users\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account."},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars."},{"name":"database","description":"The Database service allows you to create structured collections of documents, query and filter lists of documents"},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location."},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health."},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server."},{"name":"storage","description":"The Storage service allows you to manage your project files."},{"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"},{"name":"users","description":"The Users service allows you to manage your project users."},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions."}],"definitions":{"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"]},"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"]},"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"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Collection read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Collection write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"permission":{"type":"string","description":"Collection permission model. Possible values: `document` or `collection`","x-example":"document"},"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\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$read","$write","name","enabled","permission","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\/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"},"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","required","size"]},"attributeInteger":{"description":"AttributeInteger","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"},"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","required"]},"attributeFloat":{"description":"AttributeFloat","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"},"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","required"]},"attributeBoolean":{"description":"AttributeBoolean","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"},"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","required"]},"attributeEmail":{"description":"AttributeEmail","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"},"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","required","format"]},"attributeEnum":{"description":"AttributeEnum","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"},"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","required","elements","format"]},"attributeIp":{"description":"AttributeIP","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"},"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","required","format"]},"attributeUrl":{"description":"AttributeURL","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"},"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","required","format"]},"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"},"attributes":{"type":"array","description":"Index attributes.","items":{"type":"string"},"x-example":[]},"orders":{"type":"array","description":"Index orders.","items":{"type":"string"},"x-example":[]}},"required":["key","type","status","attributes","orders"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collection":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$read":{"type":"array","description":"Document read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"Document write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"}},"additionalProperties":true,"required":["$id","$collection","$read","$write"]},"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":"integer","description":"Log creation time in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"integer","description":"User registration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"integer","description":"Unix timestamp of the most recent password update","x-example":1592981250,"format":"int32"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"emailVerification":{"type":"boolean","description":"Email 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"}}},"required":["$id","name","registration","status","passwordUpdate","email","emailVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"integer","description":"Session expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"integer","description":"Date, the Unix timestamp of when the access token expires.","x-example":1592981250,"format":"int32"},"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}},"required":["$id","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"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":"integer","description":"Token expiration date in Unix timestamp.","x-example":1592981250,"format":"int32"}},"required":["$id","userId","secret","expire"]},"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 Europian 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"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":"role:all"},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":"user:608f9da25e7e1"},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"dateCreated":{"type":"integer","description":"File creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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","$read","$write","name","dateCreated","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"File read permissions.","items":{"type":"string"},"x-example":["role:all"]},"$write":{"type":"array","description":"File write permissions.","items":{"type":"string"},"x-example":["user:608f9da25e7e1"]},"permission":{"type":"string","description":"Bucket permission model. Possible values: `bucket` or `file`","x-example":"file"},"dateCreated":{"type":"integer","description":"Bucket creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Bucket update date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"]},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$read","$write","permission","dateCreated","dateUpdated","name","enabled","maximumFileSize","allowedFileExtensions","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"dateCreated":{"type":"integer","description":"Team creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","name","dateCreated","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"User name.","x-example":"VIP"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"invited":{"type":"integer","description":"Date, the user has been invited to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"joined":{"type":"integer","description":"Date, the user has accepted the invitation to join the team in Unix timestamp.","x-example":1592981250,"format":"int32"},"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":"admin"}},"required":["$id","userId","teamId","name","email","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"role:member"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"dateCreated":{"type":"integer","description":"Function creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"dateUpdated":{"type":"integer","description":"Function update date in Unix timestamp.","x-example":1592981257,"format":"int32"},"status":{"type":"string","description":"Function status. Possible values: `disabled`, `enabled`","x-example":"enabled"},"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":"object","description":"Function environment variables.","x-example":{"key":"value"}},"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 * * *"},"scheduleNext":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981292,"format":"int32"},"schedulePrevious":{"type":"integer","description":"Function next scheduled execution date in Unix timestamp.","x-example":1592981237,"format":"int32"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","execute","name","dateCreated","dateUpdated","status","runtime","deployment","vars","events","schedule","scheduleNext","schedulePrevious","timeout"]},"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"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"dateCreated":{"type":"integer","description":"The deployment creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"enabled"},"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.","x-example":"enabled"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"}},"required":["$id","resourceId","resourceType","dateCreated","entrypoint","size","buildId","activate","status","buildStdout","buildStderr"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$read":{"type":"array","description":"Execution read permissions.","items":{"type":"string"},"x-example":"role:all"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"dateCreated":{"type":"integer","description":"The execution creation date in Unix timestamp.","x-example":1592981250,"format":"int32"},"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"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output","x-example":""},"time":{"type":"number","description":"The script execution time in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$read","functionId","dateCreated","trigger","status","statusCode","stdout","stderr","time"]},"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":{"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":["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"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file diff --git a/app/tasks/sdks.php b/app/tasks/sdks.php index 22878e9ac..166eec495 100644 --- a/app/tasks/sdks.php +++ b/app/tasks/sdks.php @@ -196,7 +196,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ->setTwitter(APP_SOCIAL_TWITTER_HANDLE) ->setDiscord(APP_SOCIAL_DISCORD_CHANNEL, APP_SOCIAL_DISCORD) ->setDefaultHeaders([ - 'X-Appwrite-Response-Format' => '0.12.0', + 'X-Appwrite-Response-Format' => '0.13.0', ]); try { diff --git a/docs/examples/0.13.x/console-web/examples/account/update-session.md b/docs/examples/0.13.x/console-web/examples/account/update-session.md new file mode 100644 index 000000000..cfb61b679 --- /dev/null +++ b/docs/examples/0.13.x/console-web/examples/account/update-session.md @@ -0,0 +1,14 @@ +const sdk = new Appwrite(); + +sdk + .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint + .setProject('5df5acd0d48c2') // Your project ID +; + +let promise = sdk.account.updateSession('[SESSION_ID]'); + +promise.then(function (response) { + console.log(response); // Success +}, function (error) { + console.log(error); // Failure +}); \ No newline at end of file diff --git a/docs/examples/0.13.x/console-web/examples/functions/create-deployment.md b/docs/examples/0.13.x/console-web/examples/functions/create-deployment.md new file mode 100644 index 000000000..6076987a5 --- /dev/null +++ b/docs/examples/0.13.x/console-web/examples/functions/create-deployment.md @@ -0,0 +1,14 @@ +const sdk = new Appwrite(); + +sdk + .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint + .setProject('5df5acd0d48c2') // Your project ID +; + +let promise = sdk.functions.createDeployment('[FUNCTION_ID]', '[ENTRYPOINT]', document.getElementById('uploader').files[0], false); + +promise.then(function (response) { + console.log(response); // Success +}, function (error) { + console.log(error); // Failure +}); \ No newline at end of file diff --git a/docs/examples/0.13.x/console-web/examples/functions/delete-deployment.md b/docs/examples/0.13.x/console-web/examples/functions/delete-deployment.md new file mode 100644 index 000000000..1bea4d90f --- /dev/null +++ b/docs/examples/0.13.x/console-web/examples/functions/delete-deployment.md @@ -0,0 +1,14 @@ +const sdk = new Appwrite(); + +sdk + .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint + .setProject('5df5acd0d48c2') // Your project ID +; + +let promise = sdk.functions.deleteDeployment('[FUNCTION_ID]', '[DEPLOYMENT_ID]'); + +promise.then(function (response) { + console.log(response); // Success +}, function (error) { + console.log(error); // Failure +}); \ No newline at end of file diff --git a/docs/examples/0.13.x/console-web/examples/functions/get-deployment.md b/docs/examples/0.13.x/console-web/examples/functions/get-deployment.md new file mode 100644 index 000000000..3eb536f9e --- /dev/null +++ b/docs/examples/0.13.x/console-web/examples/functions/get-deployment.md @@ -0,0 +1,14 @@ +const sdk = new Appwrite(); + +sdk + .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint + .setProject('5df5acd0d48c2') // Your project ID +; + +let promise = sdk.functions.getDeployment('[FUNCTION_ID]', '[DEPLOYMENT_ID]'); + +promise.then(function (response) { + console.log(response); // Success +}, function (error) { + console.log(error); // Failure +}); \ No newline at end of file diff --git a/docs/examples/0.13.x/console-web/examples/functions/list-deployments.md b/docs/examples/0.13.x/console-web/examples/functions/list-deployments.md new file mode 100644 index 000000000..04ef5bf9c --- /dev/null +++ b/docs/examples/0.13.x/console-web/examples/functions/list-deployments.md @@ -0,0 +1,14 @@ +const sdk = new Appwrite(); + +sdk + .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint + .setProject('5df5acd0d48c2') // Your project ID +; + +let promise = sdk.functions.listDeployments('[FUNCTION_ID]'); + +promise.then(function (response) { + console.log(response); // Success +}, function (error) { + console.log(error); // Failure +}); \ No newline at end of file diff --git a/docs/examples/0.13.x/console-web/examples/functions/retry-build.md b/docs/examples/0.13.x/console-web/examples/functions/retry-build.md new file mode 100644 index 000000000..e0f49976b --- /dev/null +++ b/docs/examples/0.13.x/console-web/examples/functions/retry-build.md @@ -0,0 +1,14 @@ +const sdk = new Appwrite(); + +sdk + .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint + .setProject('5df5acd0d48c2') // Your project ID +; + +let promise = sdk.functions.retryBuild('[FUNCTION_ID]', '[DEPLOYMENT_ID]', '[BUILD_ID]'); + +promise.then(function (response) { + console.log(response); // Success +}, function (error) { + console.log(error); // Failure +}); \ No newline at end of file diff --git a/docs/examples/0.13.x/console-web/examples/functions/update-deployment.md b/docs/examples/0.13.x/console-web/examples/functions/update-deployment.md new file mode 100644 index 000000000..e8e3ad2fa --- /dev/null +++ b/docs/examples/0.13.x/console-web/examples/functions/update-deployment.md @@ -0,0 +1,14 @@ +const sdk = new Appwrite(); + +sdk + .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint + .setProject('5df5acd0d48c2') // Your project ID +; + +let promise = sdk.functions.updateDeployment('[FUNCTION_ID]', '[DEPLOYMENT_ID]'); + +promise.then(function (response) { + console.log(response); // Success +}, function (error) { + console.log(error); // Failure +}); \ No newline at end of file diff --git a/docs/examples/0.13.x/console-web/examples/storage/get-file-preview.md b/docs/examples/0.13.x/console-web/examples/storage/get-file-preview.md index dd72d87ff..b9d9377e1 100644 --- a/docs/examples/0.13.x/console-web/examples/storage/get-file-preview.md +++ b/docs/examples/0.13.x/console-web/examples/storage/get-file-preview.md @@ -5,10 +5,6 @@ sdk .setProject('5df5acd0d48c2') // Your project ID ; -let promise = sdk.storage.getFilePreview('[BUCKET_ID]', '[FILE_ID]'); +let result = sdk.storage.getFilePreview('[BUCKET_ID]', '[FILE_ID]'); -promise.then(function (response) { - console.log(response); // Success -}, function (error) { - console.log(error); // Failure -}); \ No newline at end of file +console.log(result); // Resource URL \ No newline at end of file diff --git a/public/scripts/dependencies/appwrite.js b/public/scripts/dependencies/appwrite.js index 837bfbf18..706332dc9 100644 --- a/public/scripts/dependencies/appwrite.js +++ b/public/scripts/dependencies/appwrite.js @@ -49,7 +49,7 @@ }; this.headers = { 'x-sdk-version': 'appwrite:web:4.0.4', - 'X-Appwrite-Response-Format': '0.12.0', + 'X-Appwrite-Response-Format': '0.13.0', }; this.realtime = { socket: undefined, From daeaa1196160bd15781b38eabd0b4db16891dee0 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Tue, 1 Mar 2022 21:46:26 +0000 Subject: [PATCH 41/41] chore: increase cache buster --- app/init.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/init.php b/app/init.php index f75d57316..917b1bd7b 100644 --- a/app/init.php +++ b/app/init.php @@ -70,7 +70,7 @@ const APP_LIMIT_ANTIVIRUS = 20000000; //20MB const APP_LIMIT_ENCRYPTION = 20000000; //20MB const APP_LIMIT_COMPRESSION = 20000000; //20MB const APP_LIMIT_PREVIEW = 10000000; //10MB file size limit for preview endpoint -const APP_CACHE_BUSTER = 201; +const APP_CACHE_BUSTER = 300; const APP_VERSION_STABLE = '0.12.3'; const APP_DATABASE_ATTRIBUTE_EMAIL = 'email'; const APP_DATABASE_ATTRIBUTE_ENUM = 'enum';

    _#u8|bbfLU%~#00(?3>di9!q5 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%0A#m|@la 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